Skip to main content

InMemoryRelay

Struct InMemoryRelay 

Source
pub struct InMemoryRelay { /* private fields */ }
Expand description

The in-process reference relay: [RelayState] + an injected wall clock.

Implementations§

Source§

impl InMemoryRelay

Source

pub fn new(config: RelayConfig, wall: WallClock) -> Self

Trait Implementations§

Source§

impl Debug for InMemoryRelay

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Relay for InMemoryRelay

Source§

fn register(&mut self, device_id: &str) -> Result<RosterEntry, RelayError>

Enroll (or touch) a device on the roster. Idempotent; push/pull/ack auto-register on first contact.
Source§

fn push( &mut self, device_id: &str, ops: &[OpRecord], ) -> Result<PushOutcome, RelayError>

Admit device_id’s own journal-durable ops (in seq order) onto its relay-held chain. Contract (B1, binding): the caller transmits only ops that are already journal-durable on the device.
Source§

fn pull( &mut self, device_id: &str, since: &Frontier, ) -> Result<PullResult, RelayError>

Every retained op above since (per-device seq cursor) + the latest checkpoint pointer.
Source§

fn ack( &mut self, device_id: &str, frontier: Hlc, ) -> Result<AckOutcome, RelayError>

Record a device’s fold frontier. Contract (B4, binding): the device acks only what it has DURABLY folded (journaled), never merely received.
Source§

fn checkpoint_put( &mut self, device_id: &str, checkpoint: &Checkpoint, ) -> Result<bool, RelayError>

Store a device-computed checkpoint. Verified, deduped on checkpoint_hash (whole-record content address — contract from B4). Returns false when the identical checkpoint was already stored.
Source§

fn checkpoint_get(&mut self) -> Result<Option<Checkpoint>, RelayError>

The latest stored checkpoint (dominance-monotone pointer), if any.
Source§

fn roster(&mut self) -> Result<Vec<RosterEntry>, RelayError>

The device registry.
Source§

fn stable_frontier(&mut self) -> Result<Option<Hlc>, RelayError>

min(acked) over active roster devices; None while any active device has never acked (nothing is droppable then).
Source§

fn gc(&mut self) -> Result<GcReport, RelayError>

Drop every op that is BOTH at/below the stable frontier AND covered by a stored checkpoint. Never drops anything else.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more