Skip to main content

Network

Trait Network 

Source
pub trait Network<T: NodeType> {
    type PeerData;

    // Required methods
    fn broadcast(
        &mut self,
        v: ViewNumber,
        m: &Message<T, Validated>,
    ) -> Result<(), NetworkError>;
    fn unicast(
        &mut self,
        v: ViewNumber,
        to: &T::SignatureKey,
        m: &Message<T, Validated>,
    ) -> Result<(), NetworkError>;
    fn multicast(
        &mut self,
        v: ViewNumber,
        to: Vec<&T::SignatureKey>,
        m: &Message<T, Validated>,
    ) -> Result<(), NetworkError>;
    fn receive(
        &mut self,
    ) -> impl Future<Output = Result<Message<T, Unchecked>, NetworkError>> + Send;
    fn shutdown(&mut self) -> impl Future<Output = ()> + Send;
    fn gc(&mut self, v: ViewNumber) -> Result<(), NetworkError>;
    fn add_peers(
        &mut self,
        r: PeerRole,
        ps: Vec<(T::SignatureKey, Self::PeerData)>,
    ) -> Result<(), NetworkError>;
    fn remove_peers(
        &mut self,
        ps: Vec<&T::SignatureKey>,
    ) -> Result<(), NetworkError>;
    fn assign_role(
        &mut self,
        r: PeerRole,
        ps: Vec<&T::SignatureKey>,
    ) -> Result<(), NetworkError>;
    fn apply_epoch(
        &mut self,
        epoch: EpochNumber,
        coord: &EpochMembershipCoordinator<T>,
    ) -> Result<(), NetworkError>;
}

Required Associated Types§

Required Methods§

Source

fn broadcast( &mut self, v: ViewNumber, m: &Message<T, Validated>, ) -> Result<(), NetworkError>

Source

fn unicast( &mut self, v: ViewNumber, to: &T::SignatureKey, m: &Message<T, Validated>, ) -> Result<(), NetworkError>

Source

fn multicast( &mut self, v: ViewNumber, to: Vec<&T::SignatureKey>, m: &Message<T, Validated>, ) -> Result<(), NetworkError>

Source

fn receive( &mut self, ) -> impl Future<Output = Result<Message<T, Unchecked>, NetworkError>> + Send

Source

fn shutdown(&mut self) -> impl Future<Output = ()> + Send

Source

fn gc(&mut self, v: ViewNumber) -> Result<(), NetworkError>

Source

fn add_peers( &mut self, r: PeerRole, ps: Vec<(T::SignatureKey, Self::PeerData)>, ) -> Result<(), NetworkError>

Source

fn remove_peers( &mut self, ps: Vec<&T::SignatureKey>, ) -> Result<(), NetworkError>

Source

fn assign_role( &mut self, r: PeerRole, ps: Vec<&T::SignatureKey>, ) -> Result<(), NetworkError>

Source

fn apply_epoch( &mut self, epoch: EpochNumber, coord: &EpochMembershipCoordinator<T>, ) -> Result<(), NetworkError>

Refresh the peer set for the given epoch using the membership coordinator.

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§