Skip to main content

WalReader

Struct WalReader 

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

Reads and parses a WAL file into a list of events.

Malformed lines are silently skipped. This is intentional — partial writes from crashes may leave incomplete JSON at the end of the file.

§Single-File vs Multi-File Loading

  • WalReader::load reads only the current (active) WAL file.
  • WalReader::load_all reads the current file PLUS all archived rotation files ({path}.1, {path}.2, …) in chronological order (oldest first, newest last). Use load_all when consumers need complete event history across WAL rotations.

§Example

use runtimo_core::WalReader;
use std::path::Path;

let reader = WalReader::load(Path::new("/tmp/app.wal")).unwrap();
for event in reader.events() {
    println!("Event: {:?} for job {}", event.event_type, event.job_id);
}

Implementations§

Source§

impl WalReader

Source

pub fn load(path: &Path) -> Result<Self>

Loads and parses all events from a single WAL file.

Reads only the file at path. If WAL rotation has occurred, events in archived files ({path}.1, {path}.2, …) are NOT included. Use WalReader::load_all when complete event history is needed.

§Errors

Returns Error::WalError if the file cannot be read. Individual malformed lines are skipped, not treated as errors.

Source

pub fn load_all(path: &Path) -> Result<Self>

Loads and parses all events from the current WAL file and all archived rotation files.

Reads archived files ({path}.1, {path}.2, …, {path}.N) first in reverse index order (newest archive → oldest archive), then the current file. This produces events in chronological order (oldest first, newest last) — the order needed by consumers that must see the full event history across WAL rotations.

Archived files that do not exist are silently skipped. Malformed lines within any file are silently skipped (same behavior as Self::load).

§Errors

Returns Error::WalError if the current WAL file at path cannot be read. Archived file read failures are logged and skipped (non-fatal).

Source

pub fn events(&self) -> &[WalEvent]

Returns a slice of all parsed events.

Source

pub fn tail(path: &Path, n: usize) -> Result<Self>

Reads only the last n lines from the WAL file.

More efficient than WalReader::load when only recent events are needed. Malformed lines are silently skipped.

§Errors

Returns Error::WalError if the file cannot be read.

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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