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::loadreads only the current (active) WAL file.WalReader::load_allreads the current file PLUS all archived rotation files ({path}.1,{path}.2, …) in chronological order (oldest first, newest last). Useload_allwhen 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
impl WalReader
Sourcepub fn load(path: &Path) -> Result<Self>
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.
Sourcepub fn load_all(path: &Path) -> Result<Self>
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).
Sourcepub fn tail(path: &Path, n: usize) -> Result<Self>
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.