pub struct Wal { /* private fields */ }Expand description
Write-Ahead Log implementation.
Provides durable logging for database transactions with configurable sync policies and automatic segment rotation.
Implementations§
Source§impl Wal
impl Wal
Sourcepub fn open(dir: &Path, config: WalConfig) -> Result<Self>
pub fn open(dir: &Path, config: WalConfig) -> Result<Self>
Opens or creates a WAL in the given directory.
If the directory contains existing WAL segments, they will be opened for append. Otherwise, a new segment is created.
Sourcepub fn append(&mut self, record: &WalRecord) -> Result<Lsn>
pub fn append(&mut self, record: &WalRecord) -> Result<Lsn>
Appends a record to the WAL.
Returns the LSN of the appended record.
Sourcepub fn current_lsn(&self) -> Lsn
pub fn current_lsn(&self) -> Lsn
Returns the current LSN (next write position).
Sourcepub fn truncate_before(&mut self, lsn: Lsn) -> Result<()>
pub fn truncate_before(&mut self, lsn: Lsn) -> Result<()>
Truncates WAL segments before the given LSN.
This is called after a checkpoint to reclaim space.
Sourcepub fn replay<F>(&self, from_lsn: Lsn, callback: F) -> Result<Lsn>
pub fn replay<F>(&self, from_lsn: Lsn, callback: F) -> Result<Lsn>
Replays records from the given LSN.
The callback is invoked for each record in LSN order. Returns the final LSN after replay.
Sourcepub fn approximate_size(&self) -> u64
pub fn approximate_size(&self) -> u64
Returns total bytes written across all segments (approximate WAL size).
Auto Trait Implementations§
impl Freeze for Wal
impl RefUnwindSafe for Wal
impl Send for Wal
impl Sync for Wal
impl Unpin for Wal
impl UnwindSafe for Wal
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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