Trait ConnectedNetwork

Source
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§

Source

fn pause(&self)

Pauses the underlying network

Source

fn resume(&self)

Resumes the underlying network

Source

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

Source

fn shut_down<'a, 'b>(&'a self) -> BoxSyncFuture<'b, ()>
where Self: 'b, 'a: 'b,

Blocks until the network is shut down

Source

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

Source

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

Source

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,

Sends a direct message to a specific node blocking

Source

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,

Receive one or many messages from the underlying network.

§Errors

If there is a network-related failure.

Provided Methods§

Source

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

Source

fn queue_node_lookup( &self, _view_number: ViewNumber, _pk: K, ) -> Result<(), TrySendError<Option<(ViewNumber, K)>>>

queues lookup of a node

§Errors

Does not error.

Source

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.

Source

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.

Implementors§