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.