Skip to main content

MemoryMarkerBackend

Struct MemoryMarkerBackend 

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

In-memory implementation of MarkerBackend.

Stores snapshots, high-fidelity markers, and gaps as Vec tables, and the slot dictionary as an [IndexMap] keyed by slot for write-once semantics. Each record’s integrity hash is retained alongside it so the verifier can recompute and compare. The scan_* methods return records in their documented sort order regardless of append order, matching the keyed persistent backend. One instance owns at most one open run at a time; opening a new run replaces the previous one (markers never block boot). Used by writer and reader unit tests and by the cfg(madsim) simulation lane.

Implementations§

Source§

impl MemoryMarkerBackend

Source

pub fn new() -> Self

Creates a new empty MemoryMarkerBackend with no run open.

Trait Implementations§

Source§

impl Debug for MemoryMarkerBackend

Source§

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

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

impl Default for MemoryMarkerBackend

Source§

fn default() -> MemoryMarkerBackend

Returns the “default value” for a type. Read more
Source§

impl MarkerBackend for MemoryMarkerBackend

Source§

fn open_run(&mut self, manifest: MarkerManifest) -> Result<(), EventStoreError>

Opens a run for marker capture with the supplied manifest. Read more
Source§

fn append_snapshot( &mut self, snapshot: &DataCursorSnapshot, hash: [u8; 32], ) -> Result<(), EventStoreError>

Appends a cursor snapshot with its precomputed integrity hash. Read more
Source§

fn append_hifi( &mut self, marker: &HiFiMarker, hash: [u8; 32], ) -> Result<(), EventStoreError>

Appends a high-fidelity marker with its precomputed integrity hash. Read more
Source§

fn append_gap( &mut self, gap: &MarkerGap, hash: [u8; 32], ) -> Result<(), EventStoreError>

Appends a gap covering a dropped range of marker sequences, with its precomputed integrity hash. Read more
Source§

fn put_dict( &mut self, entry: &StreamDictEntry, hash: [u8; 32], ) -> Result<(), EventStoreError>

Records a slot dictionary entry with its precomputed integrity hash, write-once by slot. Read more
Source§

fn scan_snapshots(&self) -> Result<Vec<DataCursorSnapshot>, EventStoreError>

Scans all cursor snapshots in ascending marker_seq order. Read more
Source§

fn scan_snapshot_records( &self, ) -> Result<Option<Vec<StoredMarkerRecord<DataCursorSnapshot>>>, EventStoreError>

Scans cursor snapshots with stored integrity hashes when the backend exposes them. Read more
Source§

fn scan_hifi(&self) -> Result<Vec<HiFiMarker>, EventStoreError>

Scans all high-fidelity markers in ascending marker_seq order. Read more
Source§

fn scan_hifi_records( &self, ) -> Result<Option<Vec<StoredMarkerRecord<HiFiMarker>>>, EventStoreError>

Scans high-fidelity markers with stored integrity hashes when the backend exposes them. Read more
Source§

fn scan_gaps(&self) -> Result<Vec<MarkerGap>, EventStoreError>

Scans all recorded gaps in ascending from_marker_seq order. Read more
Source§

fn scan_gap_records( &self, ) -> Result<Option<Vec<StoredMarkerRecord<MarkerGap>>>, EventStoreError>

Scans marker gaps with stored integrity hashes when the backend exposes them. Read more
Source§

fn scan_dict(&self) -> Result<Vec<StreamDictEntry>, EventStoreError>

Scans all slot dictionary entries in ascending slot order. Read more
Source§

fn scan_dict_records( &self, ) -> Result<Option<Vec<StoredMarkerRecord<StreamDictEntry>>>, EventStoreError>

Scans dictionary entries with stored integrity hashes when the backend exposes them. Read more
Source§

fn seal(&mut self, status: RunStatus) -> Result<(), EventStoreError>

Seals the open run with the given terminal status. Read more
Source§

fn manifest(&self) -> Result<MarkerManifest, EventStoreError>

Returns the current marker manifest. Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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
§

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

§

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.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<T> Ungil for T
where T: Send,

§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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