Trait network::application::interface::NetworkInterface
source · [−]pub trait NetworkInterface<TMessage: Message + Send, NetworkSender> {
type AppDataKey: Clone + Debug + Eq + Hash;
type AppData: Clone + Debug;
fn peer_metadata_storage(&self) -> &PeerMetadataStorage;
fn sender(&self) -> NetworkSender;
fn app_data(&self) -> &LockingHashMap<Self::AppDataKey, Self::AppData>;
fn connected_peers(
&self,
network_id: NetworkId
) -> HashMap<PeerNetworkId, PeerInfo> { ... }
fn filtered_peers<F: FnMut(&(&PeerId, &PeerInfo)) -> bool>(
&self,
network_id: NetworkId,
filter: F
) -> HashMap<PeerNetworkId, PeerInfo> { ... }
fn peers(&self, network_id: NetworkId) -> HashMap<PeerNetworkId, PeerInfo> { ... }
}Expand description
A generic NetworkInterface for applications to connect to networking
Each application would implement their own NetworkInterface. This would hold AppData specific
to the application as well as a specific Sender for cloning across threads and sending requests.
Required Associated Types
Required Methods
fn peer_metadata_storage(&self) -> &PeerMetadataStorage
fn peer_metadata_storage(&self) -> &PeerMetadataStorage
Provides the PeerMetadataStorage for other functions. Not expected to be used externally.
fn app_data(&self) -> &LockingHashMap<Self::AppDataKey, Self::AppData>
fn app_data(&self) -> &LockingHashMap<Self::AppDataKey, Self::AppData>
Application specific data interface
Provided Methods
fn connected_peers(
&self,
network_id: NetworkId
) -> HashMap<PeerNetworkId, PeerInfo>
fn connected_peers(
&self,
network_id: NetworkId
) -> HashMap<PeerNetworkId, PeerInfo>
Retrieve only connected peers
fn filtered_peers<F: FnMut(&(&PeerId, &PeerInfo)) -> bool>(
&self,
network_id: NetworkId,
filter: F
) -> HashMap<PeerNetworkId, PeerInfo>
fn filtered_peers<F: FnMut(&(&PeerId, &PeerInfo)) -> bool>(
&self,
network_id: NetworkId,
filter: F
) -> HashMap<PeerNetworkId, PeerInfo>
Filter peers with according filter