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 more