pub trait ConnectedNetwork<K: SignatureKey + 'static>:
Clone
+ Send
+ Sync
+ 'static {
// Required methods
fn pause(&self);
fn resume(&self);
fn wait_for_ready<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn shut_down<'a, 'b>(&'a self) -> BoxSyncFuture<'b, ()>
where Self: 'b,
'a: 'b;
fn broadcast_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
topic: Topic,
broadcast_delay: BroadcastDelay,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn da_broadcast_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
recipients: Vec<K>,
broadcast_delay: BroadcastDelay,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn direct_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
recipient: K,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn recv_message<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, NetworkError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
// Provided methods
fn vid_broadcast_message<'life0, 'async_trait>(
&'life0 self,
messages: HashMap<K, Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn queue_node_lookup(
&self,
_view_number: ViewNumber,
_pk: K,
) -> Result<(), TrySendError<Option<(ViewNumber, K)>>> { ... }
fn update_view<'a, 'async_trait, TYPES>(
&'a self,
_view: u64,
_epoch: Option<u64>,
_membership_coordinator: EpochMembershipCoordinator<TYPES>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where TYPES: NodeType<SignatureKey = K> + 'a + 'async_trait,
Self: 'async_trait,
'a: 'async_trait { ... }
fn is_primary_down(&self) -> bool { ... }
}
Expand description
represents a networking implmentration exposes low level API for interacting with a network intended to be implemented for libp2p, the centralized server, and memory network
Required Methods§
Sourcefn wait_for_ready<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn wait_for_ready<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Blocks until the network is successfully initialized
Sourcefn shut_down<'a, 'b>(&'a self) -> BoxSyncFuture<'b, ()>where
Self: 'b,
'a: 'b,
fn shut_down<'a, 'b>(&'a self) -> BoxSyncFuture<'b, ()>where
Self: 'b,
'a: 'b,
Blocks until the network is shut down
Sourcefn broadcast_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
topic: Topic,
broadcast_delay: BroadcastDelay,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn broadcast_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
topic: Topic,
broadcast_delay: BroadcastDelay,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
broadcast message to some subset of nodes blocking
Sourcefn da_broadcast_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
recipients: Vec<K>,
broadcast_delay: BroadcastDelay,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn da_broadcast_message<'life0, 'async_trait>(
&'life0 self,
message: Vec<u8>,
recipients: Vec<K>,
broadcast_delay: BroadcastDelay,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
broadcast a message only to a DA committee blocking
Provided Methods§
Sourcefn vid_broadcast_message<'life0, 'async_trait>(
&'life0 self,
messages: HashMap<K, Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn vid_broadcast_message<'life0, 'async_trait>(
&'life0 self,
messages: HashMap<K, Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
send messages with vid shares to its recipients blocking
Sourcefn queue_node_lookup(
&self,
_view_number: ViewNumber,
_pk: K,
) -> Result<(), TrySendError<Option<(ViewNumber, K)>>>
fn queue_node_lookup( &self, _view_number: ViewNumber, _pk: K, ) -> Result<(), TrySendError<Option<(ViewNumber, K)>>>
Sourcefn update_view<'a, 'async_trait, TYPES>(
&'a self,
_view: u64,
_epoch: Option<u64>,
_membership_coordinator: EpochMembershipCoordinator<TYPES>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
TYPES: NodeType<SignatureKey = K> + 'a + 'async_trait,
Self: 'async_trait,
'a: 'async_trait,
fn update_view<'a, 'async_trait, TYPES>(
&'a self,
_view: u64,
_epoch: Option<u64>,
_membership_coordinator: EpochMembershipCoordinator<TYPES>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
TYPES: NodeType<SignatureKey = K> + 'a + 'async_trait,
Self: 'async_trait,
'a: 'async_trait,
Update view can be used for any reason, but mostly it’s for canceling tasks, and looking up the address of the leader of a future view.
Sourcefn is_primary_down(&self) -> bool
fn is_primary_down(&self) -> bool
Is primary network down? Makes sense only for combined network
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.