Skip to main content

FilePersistence

Struct FilePersistence 

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

File-based persistence with CRC32 integrity checks.

Layout on disk:

  • <dir>/raft_state.json — serialised term + voted_for (atomic write via rename)
  • <dir>/raft_log.bin — append-only binary log where each record is: [len:4][term:8][index:8][cmd_len:4][cmd:N][crc32:4]

Implementations§

Source§

impl FilePersistence

Source

pub fn new(dir: &Path, sync_on_write: bool) -> RaftResult<Self>

Create a new file-based persistence rooted at dir.

Creates the directory if it does not exist.

Trait Implementations§

Source§

impl RaftPersistence for FilePersistence

Source§

fn save_state(&self, term: Term, voted_for: Option<NodeId>) -> RaftResult<()>

Save persistent state (current_term, voted_for)
Source§

fn load_state(&self) -> RaftResult<(Term, Option<NodeId>)>

Load persistent state; returns (term, voted_for)
Source§

fn append_entries(&self, entries: &[LogEntry]) -> RaftResult<()>

Append log entries to persistent storage
Source§

fn load_log(&self) -> RaftResult<Vec<LogEntry>>

Load all log entries from persistent storage
Source§

fn truncate_log_from(&self, index: LogIndex) -> RaftResult<()>

Truncate log from index (inclusive) onward
Source§

fn last_log_index(&self) -> RaftResult<LogIndex>

Get the last persisted log index (0 if empty)
Source§

fn save_applied_index(&self, index: LogIndex) -> RaftResult<()>

Save the applied index to durable storage. Read more
Source§

fn load_applied_index(&self) -> RaftResult<LogIndex>

Load the previously persisted applied index (0 if not set).
Source§

fn sync(&self) -> RaftResult<()>

Sync all data to durable storage

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> 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.
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