Immutable Editor-owned render scheduling, keyframe, and receipt-ordering state.
Summary
Functions
Records one accepted asynchronous receipt.
Records a synchronous receipt while preserving monotonic ordering evidence.
Classifies asynchronous receipt ordering and normalizes legacy revision zero.
Clears the scheduled render window while preserving its monotonic identity sequence.
Accepts only delivery for the currently scheduled render window.
Marks a newly ready frontend as requiring a renderer-owned keyframe reset.
Returns the last accepted render receipt revision.
Returns the last accepted renderer frame sequence.
Returns the latest submitted render intent revision.
Returns initial render correlation state.
Returns the semantic identity for the next render window.
Queues a keyframe request for one handoff to the renderer process.
Resets frontend correlation without making an older receipt fresh again.
Admits one render timer or coalesces into the already scheduled timer.
Returns whether a render timer currently owns the throttle window.
Returns the identity of the currently scheduled render window.
Advances the Editor-owned semantic intent revision.
Takes a queued keyframe request so the renderer becomes its sole durable owner.
Returns the current timer reference for cancellation at the Editor boundary.
Types
@type freshness() :: {:fresh, non_neg_integer()} | {:stale, freshness_reason()}
@type freshness_reason() ::
:superseded_intent | :stale_receipt_revision | :stale_sequence
@opaque t()
@opaque timer_identity()
Functions
@spec accept_receipt(t(), non_neg_integer(), non_neg_integer()) :: t()
Records one accepted asynchronous receipt.
@spec accept_synchronous_receipt(t(), non_neg_integer(), non_neg_integer()) :: t()
Records a synchronous receipt while preserving monotonic ordering evidence.
@spec classify_receipt(t(), non_neg_integer(), non_neg_integer()) :: freshness()
Classifies asynchronous receipt ordering and normalizes legacy revision zero.
Clears the scheduled render window while preserving its monotonic identity sequence.
@spec deliver(t(), timer_identity()) :: timer_delivery()
Accepts only delivery for the currently scheduled render window.
Marks a newly ready frontend as requiring a renderer-owned keyframe reset.
@spec last_receipt_revision(t()) :: non_neg_integer()
Returns the last accepted render receipt revision.
@spec last_receipt_sequence(t()) :: non_neg_integer()
Returns the last accepted renderer frame sequence.
@spec latest_intent_revision(t()) :: non_neg_integer()
Returns the latest submitted render intent revision.
@spec new() :: t()
Returns initial render correlation state.
@spec next_timer_identity(t()) :: timer_identity()
Returns the semantic identity for the next render window.
Queues a keyframe request for one handoff to the renderer process.
Resets frontend correlation without making an older receipt fresh again.
@spec schedule(t(), timer_identity(), reference()) :: {:scheduled | :coalesced, t()}
Admits one render timer or coalesces into the already scheduled timer.
Returns whether a render timer currently owns the throttle window.
@spec scheduled_identity(t()) :: timer_identity() | nil
Returns the identity of the currently scheduled render window.
@spec submit(t()) :: {t(), pos_integer()}
Advances the Editor-owned semantic intent revision.
Takes a queued keyframe request so the renderer becomes its sole durable owner.
Returns the current timer reference for cancellation at the Editor boundary.