pub trait MessagePassing: Send + Sync {
// Required methods
fn send_message(
&self,
target: NodeId,
message: DistributedMessage,
) -> BoxFuture<'_, Result<()>>;
fn receive_message(&self) -> BoxFuture<'_, Result<DistributedMessage>>;
fn broadcast_message(
&self,
message: DistributedMessage,
) -> BoxFuture<'_, Result<()>>;
fn send_and_receive(
&self,
target: NodeId,
message: DistributedMessage,
) -> BoxFuture<'_, Result<DistributedMessage>>;
fn has_pending_messages(&self) -> BoxFuture<'_, Result<bool>>;
fn pending_message_count(&self) -> BoxFuture<'_, Result<usize>>;
fn flush_outgoing(&self) -> BoxFuture<'_, Result<()>>;
}Expand description
Core trait for message-passing communication in distributed systems
Required Methods§
Sourcefn send_message(
&self,
target: NodeId,
message: DistributedMessage,
) -> BoxFuture<'_, Result<()>>
fn send_message( &self, target: NodeId, message: DistributedMessage, ) -> BoxFuture<'_, Result<()>>
Send a message to a specific node
Sourcefn receive_message(&self) -> BoxFuture<'_, Result<DistributedMessage>>
fn receive_message(&self) -> BoxFuture<'_, Result<DistributedMessage>>
Receive the next available message
Sourcefn broadcast_message(
&self,
message: DistributedMessage,
) -> BoxFuture<'_, Result<()>>
fn broadcast_message( &self, message: DistributedMessage, ) -> BoxFuture<'_, Result<()>>
Broadcast a message to all nodes in the cluster
Sourcefn send_and_receive(
&self,
target: NodeId,
message: DistributedMessage,
) -> BoxFuture<'_, Result<DistributedMessage>>
fn send_and_receive( &self, target: NodeId, message: DistributedMessage, ) -> BoxFuture<'_, Result<DistributedMessage>>
Send a message and wait for a response
Sourcefn has_pending_messages(&self) -> BoxFuture<'_, Result<bool>>
fn has_pending_messages(&self) -> BoxFuture<'_, Result<bool>>
Check if any messages are available
Sourcefn pending_message_count(&self) -> BoxFuture<'_, Result<usize>>
fn pending_message_count(&self) -> BoxFuture<'_, Result<usize>>
Get the number of pending messages
Sourcefn flush_outgoing(&self) -> BoxFuture<'_, Result<()>>
fn flush_outgoing(&self) -> BoxFuture<'_, Result<()>>
Flush all pending outgoing messages