Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::svg::DocumentReadAccess Class Reference

Scoped read access to a DocumentState. More...

#include "donner/svg/DocumentState.h"

Public Member Functions

 DocumentReadAccess (DocumentState &documentState)
 Create a read access guard.
 DocumentReadAccess (const DocumentReadAccess &other)=delete
 Copying access guards is not allowed.
 DocumentReadAccess (DocumentReadAccess &&other) noexcept
 Moving access guards transfers the held access.
 ~DocumentReadAccess ()
 Destructor, releasing the held access.
DocumentReadAccessoperator= (const DocumentReadAccess &other)=delete
 Copying access guards is not allowed.
DocumentReadAccessoperator= (DocumentReadAccess &&other) noexcept=delete
 Moving access guards by assignment is not needed by callers.
DocumentStatedocumentState () const
 Get the guarded document state.
Registryregistry () const
 Get the guarded registry.
std::optional< DocumentWriteAccess > tryUpgrade ()
 Try to temporarily upgrade this read scope to write access.

Static Public Member Functions

static std::optional< DocumentReadAccesstryAcquire (DocumentState &documentState)
 Attempt to create a read access guard without waiting for a writer.

Friends

class DocumentWriteAccess

Detailed Description

Scoped read access to a DocumentState.

Constructor & Destructor Documentation

◆ DocumentReadAccess()

donner::svg::DocumentReadAccess::DocumentReadAccess ( DocumentState & documentState)
inlineexplicit

Create a read access guard.

Parameters
documentStateDocument state being accessed.

Member Function Documentation

◆ tryAcquire()

std::optional< DocumentReadAccess > donner::svg::DocumentReadAccess::tryAcquire ( DocumentState & documentState)
inlinestatic

Attempt to create a read access guard without waiting for a writer.

Reentrant access from a thread that already holds read or write access succeeds immediately.

Parameters
documentStateDocument state being accessed.
Returns
A read guard, or std::nullopt while another thread owns or is waiting for write access.

◆ tryUpgrade()

auto donner::svg::DocumentReadAccess::tryUpgrade ( )
inlinenodiscard

Try to temporarily upgrade this read scope to write access.

The returned write guard restores this read access when it is destroyed. In ConcurrentDom mode the conversion succeeds only when this thread owns the document's sole read lock and the writer gate is immediately available. Failure leaves this guard unchanged.


The documentation for this class was generated from the following file: