Skip to main content

EventStoreWriter

Struct EventStoreWriter 

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

The dedicated event store writer.

Implementations§

Source§

impl EventStoreWriter

Source

pub fn spawn( backend: Box<dyn EventStore + Send>, clock: &'static AtomicTime, halt: HaltCallback, config: WriterConfig, ) -> Result<Self, EventStoreError>

Spawns the writer thread and takes ownership of backend.

The backend must already have an open run; the writer reads its current high-watermark to seed the next assigned seq.

§Errors

Returns EventStoreError::Backend when the backend has no open run or when the writer thread cannot be spawned.

Source

pub fn submit(&self, draft: EntryDraft) -> Result<(), SubmitError>

Submits a captured entry. Stamps ts_publish from the clock at receive time and hands the draft to the writer thread.

Blocks (with retry) when the channel is full. If the cumulative wait exceeds the halt threshold, fires the halt callback once and returns SubmitError::HaltSignaled; subsequent submits return SubmitError::Closed without blocking.

Under concurrent submitters, two threads stalled at the threshold can each reach the halt-fire path before either sets the halted flag, so the halt callback may run more than once and a submit already past the entry check may briefly race with another thread’s halt-fire; the kernel’s fail-stop callback must therefore be idempotent.

§Errors

Returns SubmitError::Closed when the writer is shut down, the writer thread has exited, or a prior submit already fired a fail-stop halt; returns SubmitError::HaltSignaled when this submit’s stall first crosses the configured halt threshold.

Source

pub fn high_watermark(&self) -> u64

Returns the largest seq durably acknowledged by the backend.

Updated only after a successful append_batch ack; reflects what is safe to anchor a snapshot against.

Source

pub fn record_snapshot_anchor( &self, blob_ref: impl Into<String>, content_hash: impl Into<String>, ) -> Result<SnapshotAnchor, EventStoreError>

Flushes pending entries and records a snapshot anchor at the durable high-watermark.

The cache owns blob_ref and content_hash; the writer derives the high-watermark only after earlier submitted entries have committed, so the anchor never points past durable event-store state.

§Errors

Returns EventStoreError::Closed when the writer is closed or halted, and forwards backend errors when flushing pending entries or recording the anchor fails.

Source

pub fn close(self, run_ended: EntryDraft) -> Result<u64, EventStoreError>

Drains the channel, commits run_ended as the final entry, and seals the manifest with crate::manifest::RunStatus::Ended.

Consumes the writer; further submits are unrepresentable.

§Errors

Returns EventStoreError when the writer thread fails to commit the final batch, when seal fails, or when the writer thread panicked.

Trait Implementations§

Source§

impl Debug for EventStoreWriter

Source§

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

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

impl Drop for EventStoreWriter

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

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