Trait hotshot_types::traits::network::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: u64,
        _membership: Arc<RwLock<TYPES::Membership>>,
    ) -> 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: u64, _membership: Arc<RwLock<TYPES::Membership>>, ) -> 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

Object Safety§

This trait is not object safe.

Implementors§