pub struct InMemoryNetwork<T> { /* private fields */ }Expand description
In-memory network transport for testing.
Implementations§
Source§impl<T: Send + Sync + Clone + 'static> InMemoryNetwork<T>
impl<T: Send + Sync + Clone + 'static> InMemoryNetwork<T>
Sourcepub fn new(node_id: NodeId, inbox_rx: Receiver<RaftMessage<T>>) -> Self
pub fn new(node_id: NodeId, inbox_rx: Receiver<RaftMessage<T>>) -> Self
Creates a new in-memory network node.
Sourcepub async fn register_peer(
&self,
peer_id: NodeId,
address: String,
sender: Sender<RaftMessage<T>>,
)
pub async fn register_peer( &self, peer_id: NodeId, address: String, sender: Sender<RaftMessage<T>>, )
Registers a peer’s outbox for sending messages.
Trait Implementations§
Source§impl<T: Send + Sync + Clone + Serialize + DeserializeOwned + 'static> RaftNetwork<T> for InMemoryNetwork<T>
impl<T: Send + Sync + Clone + Serialize + DeserializeOwned + 'static> RaftNetwork<T> for InMemoryNetwork<T>
Source§fn send_request_vote<'life0, 'async_trait>(
&'life0 self,
peer_id: NodeId,
term: Term,
candidate_id: NodeId,
last_log_index: LogIndex,
last_log_term: Term,
) -> Pin<Box<dyn Future<Output = Result<Option<RaftMessage<T>>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn send_request_vote<'life0, 'async_trait>(
&'life0 self,
peer_id: NodeId,
term: Term,
candidate_id: NodeId,
last_log_index: LogIndex,
last_log_term: Term,
) -> Pin<Box<dyn Future<Output = Result<Option<RaftMessage<T>>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sends a RequestVote RPC to a specific peer.
Source§fn send_append_entries<'life0, 'async_trait>(
&'life0 self,
peer_id: NodeId,
term: Term,
leader_id: NodeId,
prev_log_index: LogIndex,
prev_log_term: Term,
entries: Vec<LogEntry<T>>,
leader_commit: LogIndex,
) -> Pin<Box<dyn Future<Output = Result<Option<RaftMessage<T>>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn send_append_entries<'life0, 'async_trait>(
&'life0 self,
peer_id: NodeId,
term: Term,
leader_id: NodeId,
prev_log_index: LogIndex,
prev_log_term: Term,
entries: Vec<LogEntry<T>>,
leader_commit: LogIndex,
) -> Pin<Box<dyn Future<Output = Result<Option<RaftMessage<T>>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sends an AppendEntries RPC to a specific peer.
Source§fn send_install_snapshot<'life0, 'async_trait>(
&'life0 self,
peer_id: NodeId,
term: Term,
leader_id: NodeId,
snapshot: Snapshot<T>,
) -> Pin<Box<dyn Future<Output = Result<Option<RaftMessage<T>>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn send_install_snapshot<'life0, 'async_trait>(
&'life0 self,
peer_id: NodeId,
term: Term,
leader_id: NodeId,
snapshot: Snapshot<T>,
) -> Pin<Box<dyn Future<Output = Result<Option<RaftMessage<T>>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sends an InstallSnapshot RPC to a specific peer.
Source§fn receive<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<RaftMessage<T>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn receive<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<RaftMessage<T>, NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Receives the next incoming RPC message.
Auto Trait Implementations§
impl<T> Freeze for InMemoryNetwork<T>
impl<T> !RefUnwindSafe for InMemoryNetwork<T>
impl<T> Send for InMemoryNetwork<T>where
T: Send,
impl<T> Sync for InMemoryNetwork<T>where
T: Send,
impl<T> Unpin for InMemoryNetwork<T>
impl<T> !UnwindSafe for InMemoryNetwork<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