pub struct LogValidator { /* private fields */ }Expand description
A growing, always-well-formed log you fold candidates into one at a time.
Each push validates the candidate against everything folded
so far and, on success, extends the working log, so the validator’s own
invariant (the log is well formed) is preserved by construction. This is the
shape the server holds for a batch append: build one over the recorded log,
push each incoming envelope, and append the accepted ones to the store.
Implementations§
Source§impl LogValidator
impl LogValidator
Sourcepub fn new(log: Vec<EventEnvelope>) -> LogValidator
pub fn new(log: Vec<EventEnvelope>) -> LogValidator
Builds a validator over an existing (well-formed) log prefix.
Sourcepub fn next_seq(&self) -> SequenceNumber
pub fn next_seq(&self) -> SequenceNumber
The position the next accepted append will occupy.
Sourcepub fn log(&self) -> &[EventEnvelope]
pub fn log(&self) -> &[EventEnvelope]
The working log folded so far.
Sourcepub fn validate(&self, candidate: &EventEnvelope) -> Result<(), ValidationError>
pub fn validate(&self, candidate: &EventEnvelope) -> Result<(), ValidationError>
Decides whether candidate is the legal next event, without folding it.
§Errors
The ValidationError from validate_next.
Sourcepub fn push(&mut self, candidate: EventEnvelope) -> Result<(), ValidationError>
pub fn push(&mut self, candidate: EventEnvelope) -> Result<(), ValidationError>
Validates candidate and, on success, extends the working log with it.
§Errors
The ValidationError from validate_next; the log is left
unchanged when the candidate is rejected.
Trait Implementations§
Source§impl Clone for LogValidator
impl Clone for LogValidator
Source§fn clone(&self) -> LogValidator
fn clone(&self) -> LogValidator
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for LogValidator
impl RefUnwindSafe for LogValidator
impl Send for LogValidator
impl Sync for LogValidator
impl Unpin for LogValidator
impl UnsafeUnpin for LogValidator
impl UnwindSafe for LogValidator
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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>
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>
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 more