pub struct CrdtEventLog { /* private fields */ }Expand description
A CRDT-based distributed event log.
Combines a G-Counter (total events), a PN-Counter (net activity), and LWW-Register entries to provide a causally consistent log across nodes.
Implementations§
Source§impl CrdtEventLog
impl CrdtEventLog
Sourcepub fn new(node_id: impl Into<String>) -> Self
pub fn new(node_id: impl Into<String>) -> Self
Creates a new CRDT event log for the given node.
Sourcepub fn append(&self, payload: Vec<u8>) -> u64
pub fn append(&self, payload: Vec<u8>) -> u64
Appends an event to the log, returning the assigned sequence number.
Sourcepub fn record_removal(&self)
pub fn record_removal(&self)
Records a removal (decrement) event without removing from the immutable log.
Sourcepub fn set_register(&self, key: &str, value: Vec<u8>)
pub fn set_register(&self, key: &str, value: Vec<u8>)
Writes a named LWW-Register value.
Sourcepub fn merge_remote(&self, remote: &RemoteCrdtState)
pub fn merge_remote(&self, remote: &RemoteCrdtState)
Merges a remote CRDT event log state into this log.
Sourcepub fn export_state(&self) -> RemoteCrdtState
pub fn export_state(&self) -> RemoteCrdtState
Exports current state for transmission to remote nodes.
Sourcepub fn stats(&self) -> CrdtEventLogStats
pub fn stats(&self) -> CrdtEventLogStats
Returns CRDT event log statistics.
Sourcepub fn entries(&self) -> Vec<CrdtLogEntry>
pub fn entries(&self) -> Vec<CrdtLogEntry>
Returns all log entries in sequence order.
Auto Trait Implementations§
impl Freeze for CrdtEventLog
impl !RefUnwindSafe for CrdtEventLog
impl Send for CrdtEventLog
impl Sync for CrdtEventLog
impl Unpin for CrdtEventLog
impl UnsafeUnpin for CrdtEventLog
impl !UnwindSafe for CrdtEventLog
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.