pub struct BufferedRaftLog<T>where
T: TypeConfig,{ /* private fields */ }Expand description
High-performance buffered Raft log with event-driven architecture
This implementation provides in-memory first access with configurable persistence strategies while ensuring thread safety and avoiding deadlocks.
Key design principles:
- Lock-free reads for 99% of operations
- Event-driven asynchronous processing
- Deadlock prevention through proper error handling
- Memory-efficient batch operations
Implementations§
Source§impl<T> BufferedRaftLog<T>where
T: TypeConfig,
impl<T> BufferedRaftLog<T>where
T: TypeConfig,
pub fn new( node_id: u32, persistence_config: PersistenceConfig, storage: Arc<SOF<T>>, ) -> (Self, UnboundedReceiver<LogCommand>)
Sourcepub fn start(self, receiver: UnboundedReceiver<LogCommand>) -> Arc<Self>
pub fn start(self, receiver: UnboundedReceiver<LogCommand>) -> Arc<Self>
Start the command processor and return an Arc-wrapped instance
Sourcepub async fn process_flush(&self, indexes: &[u64]) -> Result<()>
pub async fn process_flush(&self, indexes: &[u64]) -> Result<()>
Process entries for flush operation Separated to make error handling clearer
Sourcepub fn remove_range(&self, range: RangeInclusive<u64>)
pub fn remove_range(&self, range: RangeInclusive<u64>)
Efficient range removal with targeted term index updates O(k + t) where k = number of entries removed, t = number of affected terms
Trait Implementations§
Source§impl<T> Debug for BufferedRaftLog<T>where
T: TypeConfig,
impl<T> Debug for BufferedRaftLog<T>where
T: TypeConfig,
Auto Trait Implementations§
impl<T> !Freeze for BufferedRaftLog<T>
impl<T> !RefUnwindSafe for BufferedRaftLog<T>
impl<T> Send for BufferedRaftLog<T>
impl<T> Sync for BufferedRaftLog<T>
impl<T> Unpin for BufferedRaftLog<T>
impl<T> !UnwindSafe for BufferedRaftLog<T>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request