pub struct LogStore<T>where
T: RaftTypeConfig,{
pub writer: Sender<Action>,
pub reader: Sender<Action>,
/* private fields */
}Expand description
T::NodeId MUST be a u64 for the LogStore to work correctly.
Fields§
§writer: Sender<Action>§reader: Sender<Action>Implementations§
Source§impl<T> LogStore<T>where
T: RaftTypeConfig,
impl<T> LogStore<T>where
T: RaftTypeConfig,
Sourcepub async fn start(
base_path: String,
sync: LogSync,
wal_size: u32,
) -> Result<Self, Error>
pub async fn start( base_path: String, sync: LogSync, wal_size: u32, ) -> Result<Self, Error>
Start the LogStore
Sourcepub async fn start_writer_migration(
base_path: String,
wal_size: u32,
) -> Result<Sender<Action>, Error>
pub async fn start_writer_migration( base_path: String, wal_size: u32, ) -> Result<Sender<Action>, Error>
Gives you a raw handle to the writer channel to perform manual migrations. Does not start a log store and does not do anything on its own.
pub fn shutdown_handle(&self) -> ShutdownHandle
pub async fn stop(self) -> Result<(), Error>
Trait Implementations§
Source§impl<T> RaftLogReader<T> for LogStore<T>where
T: RaftTypeConfig,
impl<T> RaftLogReader<T> for LogStore<T>where
T: RaftTypeConfig,
Source§async fn try_get_log_entries<RB: RangeBounds<u64> + Clone + Debug + OptionalSend>(
&mut self,
range: RB,
) -> Result<Vec<T::Entry>, StorageError<T::NodeId>>
async fn try_get_log_entries<RB: RangeBounds<u64> + Clone + Debug + OptionalSend>( &mut self, range: RB, ) -> Result<Vec<T::Entry>, StorageError<T::NodeId>>
Get a series of log entries from storage. Read more
Source§fn limited_get_log_entries(
&mut self,
start: u64,
end: u64,
) -> impl Future<Output = Result<Vec<<C as RaftTypeConfig>::Entry>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
fn limited_get_log_entries( &mut self, start: u64, end: u64, ) -> impl Future<Output = Result<Vec<<C as RaftTypeConfig>::Entry>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
Returns log entries within range
[start, end), end is exclusive,
potentially limited by implementation-defined constraints. Read moreSource§impl<T> RaftLogStorage<T> for LogStore<T>where
T: RaftTypeConfig,
impl<T> RaftLogStorage<T> for LogStore<T>where
T: RaftTypeConfig,
Source§type LogReader = LogStoreReader<T>
type LogReader = LogStoreReader<T>
Log reader type. Read more
Source§async fn get_log_state(
&mut self,
) -> Result<LogState<T>, StorageError<T::NodeId>>
async fn get_log_state( &mut self, ) -> Result<LogState<T>, StorageError<T::NodeId>>
Returns the last deleted log id and the last log id. Read more
Source§async fn get_log_reader(&mut self) -> Self::LogReader
async fn get_log_reader(&mut self) -> Self::LogReader
Get the log reader. Read more
Source§async fn save_vote(
&mut self,
vote: &Vote<T::NodeId>,
) -> Result<(), StorageError<T::NodeId>>
async fn save_vote( &mut self, vote: &Vote<T::NodeId>, ) -> Result<(), StorageError<T::NodeId>>
Save vote to storage. Read more
Source§async fn read_vote(
&mut self,
) -> Result<Option<Vote<T::NodeId>>, StorageError<T::NodeId>>
async fn read_vote( &mut self, ) -> Result<Option<Vote<T::NodeId>>, StorageError<T::NodeId>>
Return the last saved vote by
Self::save_vote.Source§async fn append<I>(
&mut self,
entries: I,
callback: LogFlushed<T>,
) -> Result<(), StorageError<T::NodeId>>
async fn append<I>( &mut self, entries: I, callback: LogFlushed<T>, ) -> Result<(), StorageError<T::NodeId>>
Append log entries and call the
callback once logs are persisted on disk. Read moreSource§async fn truncate(
&mut self,
log_id: LogId<T::NodeId>,
) -> Result<(), StorageError<T::NodeId>>
async fn truncate( &mut self, log_id: LogId<T::NodeId>, ) -> Result<(), StorageError<T::NodeId>>
Truncate logs since
log_id, inclusive Read moreSource§async fn purge(
&mut self,
log_id: LogId<T::NodeId>,
) -> Result<(), StorageError<T::NodeId>>
async fn purge( &mut self, log_id: LogId<T::NodeId>, ) -> Result<(), StorageError<T::NodeId>>
Purge logs upto
log_id, inclusive Read moreSource§fn save_committed(
&mut self,
_committed: Option<LogId<<C as RaftTypeConfig>::NodeId>>,
) -> impl Future<Output = Result<(), StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
fn save_committed( &mut self, _committed: Option<LogId<<C as RaftTypeConfig>::NodeId>>, ) -> impl Future<Output = Result<(), StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
Saves the last committed log id to storage. Read more
Source§fn read_committed(
&mut self,
) -> impl Future<Output = Result<Option<LogId<<C as RaftTypeConfig>::NodeId>>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
fn read_committed( &mut self, ) -> impl Future<Output = Result<Option<LogId<<C as RaftTypeConfig>::NodeId>>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
Return the last saved committed log id by
Self::save_committed.Auto Trait Implementations§
impl<T> Freeze for LogStore<T>
impl<T> RefUnwindSafe for LogStore<T>where
T: RefUnwindSafe,
impl<T> Send for LogStore<T>
impl<T> Sync for LogStore<T>
impl<T> Unpin for LogStore<T>where
T: Unpin,
impl<T> UnsafeUnpin for LogStore<T>
impl<T> UnwindSafe for LogStore<T>where
T: UnwindSafe,
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<C, LR> RaftLogReaderExt<C> for LRwhere
C: RaftTypeConfig,
LR: RaftLogReader<C>,
impl<C, LR> RaftLogReaderExt<C> for LRwhere
C: RaftTypeConfig,
LR: RaftLogReader<C>,
Source§fn try_get_log_entry(
&mut self,
log_index: u64,
) -> impl Future<Output = Result<Option<<C as RaftTypeConfig>::Entry>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
fn try_get_log_entry( &mut self, log_index: u64, ) -> impl Future<Output = Result<Option<<C as RaftTypeConfig>::Entry>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
Try to get an log entry. Read more
Source§fn get_log_entries<RB>(
&mut self,
range: RB,
) -> impl Future<Output = Result<Vec<<C as RaftTypeConfig>::Entry>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
fn get_log_entries<RB>( &mut self, range: RB, ) -> impl Future<Output = Result<Vec<<C as RaftTypeConfig>::Entry>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
Get a series of log entries from storage. Read more
Source§fn get_log_id(
&mut self,
log_index: u64,
) -> impl Future<Output = Result<LogId<<C as RaftTypeConfig>::NodeId>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
fn get_log_id( &mut self, log_index: u64, ) -> impl Future<Output = Result<LogId<<C as RaftTypeConfig>::NodeId>, StorageError<<C as RaftTypeConfig>::NodeId>>> + Send
Get the log id of the entry at
index.Source§impl<C, T> RaftLogStorageExt<C> for Twhere
T: RaftLogStorage<C>,
C: RaftTypeConfig,
impl<C, T> RaftLogStorageExt<C> for Twhere
T: RaftLogStorage<C>,
C: RaftTypeConfig,
Source§fn blocking_append<I>(
&mut self,
entries: I,
) -> impl Future<Output = Result<(), StorageError<<C as RaftTypeConfig>::NodeId>>> + Sendwhere
I: IntoIterator<Item = <C as RaftTypeConfig>::Entry> + OptionalSend,
<I as IntoIterator>::IntoIter: OptionalSend,
fn blocking_append<I>(
&mut self,
entries: I,
) -> impl Future<Output = Result<(), StorageError<<C as RaftTypeConfig>::NodeId>>> + Sendwhere
I: IntoIterator<Item = <C as RaftTypeConfig>::Entry> + OptionalSend,
<I as IntoIterator>::IntoIter: OptionalSend,
Blocking mode append log entries to the storage. Read more