pub struct InMemoryRelay { /* private fields */ }Expand description
The in-process reference relay: [RelayState] + an injected wall clock.
Implementations§
Source§impl InMemoryRelay
impl InMemoryRelay
pub fn new(config: RelayConfig, wall: WallClock) -> Self
Trait Implementations§
Source§impl Debug for InMemoryRelay
impl Debug for InMemoryRelay
Source§impl Relay for InMemoryRelay
impl Relay for InMemoryRelay
Source§fn register(&mut self, device_id: &str) -> Result<RosterEntry, RelayError>
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>
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>
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>
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>
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>
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>
fn roster(&mut self) -> Result<Vec<RosterEntry>, RelayError>
The device registry.
Source§fn stable_frontier(&mut self) -> Result<Option<Hlc>, RelayError>
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).Auto Trait Implementations§
impl !RefUnwindSafe for InMemoryRelay
impl !UnwindSafe for InMemoryRelay
impl Freeze for InMemoryRelay
impl Send for InMemoryRelay
impl Sync for InMemoryRelay
impl Unpin for InMemoryRelay
impl UnsafeUnpin for InMemoryRelay
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more