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§
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>
Sourcefn apply_epoch(
&mut self,
epoch: EpochNumber,
coord: &EpochMembershipCoordinator<T>,
) -> Result<(), NetworkError>
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.