Skip to main content

AsyncJournalWriter

Struct AsyncJournalWriter 

pub struct AsyncJournalWriter { /* private fields */ }
Expand description

Journal writer that stamps events inline and writes to disk on a background thread.

The stamping work (seq assignment, hash chain, serialization) happens synchronously in append() — only the write_all() and sync_all() calls are moved off the hot path.

Implementations§

§

impl AsyncJournalWriter

pub fn new( writer: JournalWriter, batch_interval: Duration, ) -> Result<Self, JournalError>

Wrap a JournalWriter, spawning a background thread for disk I/O.

batch_interval controls how often the background thread calls sync_all(). A shorter interval reduces data-at-risk on crash; a longer interval improves throughput. Default: 100 ms.

pub fn with_defaults(writer: JournalWriter) -> Result<Self, JournalError>

Create with the default 100 ms batch interval.

pub fn append( &mut self, event: EngineEvent, ) -> Result<EngineEvent, JournalError>

Stamp the event inline and send the frame to the background writer.

Returns the stamped event (with seq, hash chain, etc. finalized). The disk write happens asynchronously on the background thread.

pub fn next_seq(&self) -> u64

Return the next sequence number that will be assigned.

pub fn run_id(&self) -> Uuid

Return the run ID.

pub fn path(&self) -> &Path

Return the journal file path.

pub fn last_record_hash(&self) -> Option<&str>

Return the last record hash.

pub fn shutdown(&mut self) -> Result<(), JournalError>

Flush all pending writes, fsync, and join the background thread.

Any I/O error that occurred in the background thread is propagated. After shutdown, append() will fail (channel disconnected).

pub fn into_inner(self) -> Result<JournalWriter, JournalError>

Shutdown the background thread and return the inner JournalWriter.

After this call, the inner writer can be used for direct synchronous I/O (e.g. in tests or during shutdown verification). The stamper state (seq, hash chain) is preserved.

Trait Implementations§

§

impl Drop for AsyncJournalWriter

§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

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
§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

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

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

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
§

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,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,