Donner 0.8.0-pre
Embeddable browser-grade SVG2 engine
Loading...
Searching...
No Matches
DocumentState.h File Reference
#include <algorithm>
#include <atomic>
#include <cassert>
#include <chrono>
#include <condition_variable>
#include <cstddef>
#include <cstdint>
#include <deque>
#include <memory>
#include <mutex>
#include <optional>
#include <thread>
#include <utility>
#include <vector>
#include "donner/base/EcsRegistry.h"
Include dependency graph for DocumentState.h:
This graph shows which files directly or indirectly include this file:

Classes

class  donner::svg::DocumentAccessLock
 Lightweight reader/writer gate for document access. More...
struct  donner::svg::DetachedNodeDiagnostics
 Summary of detached-node collection state. More...
struct  donner::svg::DocumentAccessDiagnostics
 Summary of document access and lock state. More...
struct  donner::svg::DocumentMutationRecord
 One committed document mutation revision. More...
struct  donner::svg::DocumentMutationLogSnapshot
 Snapshot of mutation-log records after a caller-owned sequence number. More...
struct  donner::svg::DetachedNodeState
 Document-local detached-node collection state. More...
class  donner::svg::DocumentState
 Shared mutable state behind SVGDocument and SVGElement facades. More...
class  donner::svg::DocumentReadAccess
 Scoped read access to a DocumentState. More...
class  donner::svg::DocumentWriteAccess
 Scoped write access to a DocumentState. More...
class  donner::svg::DetachedNodeCollectionDeferral
 Scoped deferral for detached-node collection during snapshot or observer epochs. More...
class  donner::svg::DocumentMutationBatch
 Scoped write access that coalesces nested DOM mutation revision bumps. More...

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.
namespace  donner::svg
 Donner SVG library, which can load, manipulate and render SVG files.

Enumerations

enum class  donner::svg::ThreadingMode {
  donner::svg::SingleThreaded ,
  donner::svg::ConcurrentDom
}
 DOM threading policy for a document. More...

Class Documentation

◆ donner::svg::DetachedNodeDiagnostics

struct donner::svg::DetachedNodeDiagnostics

Summary of detached-node collection state.

Class Members
size_t collectedInLastPass = 0 Roots destroyed in the last pass.
bool isCollecting = false True while collection is active.
uint32_t maxPublicHandlesOnRetainedRoot = 0 Max handles on a retained root.
uint64_t maxRetainedSnapshotOrObserverEpoch = 0 Future epoch retention high-water.
size_t queuedDetachedRoots = 0 Detached roots pending collection.
size_t retainedByPublicHandles = 0 Queued roots currently retained by public handles.
size_t retainedByPublicHandlesInLastPass = 0 Roots skipped in the last pass.
size_t retainedBySnapshotOrObserverEpochs = 0 Roots skipped due to future epochs.

◆ donner::svg::DocumentAccessDiagnostics

struct donner::svg::DocumentAccessDiagnostics

Summary of document access and lock state.

Class Members
uint32_t activeReadLocks = 0 Shared read locks currently held.
uint64_t maxReadLockHeldNs = 0 Longest read-lock hold time in nanoseconds.
uint64_t maxWriteLockHeldNs = 0 Longest write-lock hold time in nanoseconds.
uint64_t readAccesses = 0 Read access guards created in ConcurrentDom.
uint64_t readLocksAcquired = 0 Shared locks acquired by read guards.
uint64_t reentrantReadAccesses = 0 Read guards nested inside a write guard.
uint64_t reentrantWriteAccesses = 0 Write guards nested inside a write guard.
uint64_t totalReadLockHeldNs = 0 Total read-lock hold time in nanoseconds.
uint64_t totalWriteLockHeldNs = 0 Total write-lock hold time in nanoseconds.
uint64_t writeAccesses = 0 Write access guards created in ConcurrentDom.
bool writeLockHeld = false True while a unique write lock is held.
uint64_t writeLocksAcquired = 0 Unique locks acquired by write guards.

◆ donner::svg::DocumentMutationRecord

struct donner::svg::DocumentMutationRecord

One committed document mutation revision.

Class Members
uint64_t revision = 0 Document revision after the mutation committed.
uint64_t sequence = 0 Monotonic mutation-log sequence number.

◆ donner::svg::DocumentMutationLogSnapshot

struct donner::svg::DocumentMutationLogSnapshot

Snapshot of mutation-log records after a caller-owned sequence number.

Collaboration diagram for donner::svg::DocumentMutationLogSnapshot:
[legend]
Class Members
uint64_t latestSequence = 0 Latest sequence in the document.
bool missedRecords = false True if older records were truncated.
vector< DocumentMutationRecord > records Mutation records newer than the caller cursor.