[−][src]Trait libp2p::core::swarm::NetworkBehaviour
A behaviour for the network. Allows customizing the swarm.
This trait has been designed to be composable. Multiple implementations can be combined into one that handles all the behaviours at once.
Associated Types
type ProtocolsHandler: IntoProtocolsHandler
Handler for all the protocols the network supports.
type OutEvent
Event generated by the swarm.
Required methods
fn new_handler(&mut self) -> Self::ProtocolsHandler
Creates a new ProtocolsHandler
for a connection with a peer.
fn addresses_of_peer(&mut self, peer_id: &PeerId) -> Vec<Multiaddr>
Addresses that this behaviour is aware of for this specific peer, and that may allow reaching the peer.
fn inject_connected(&mut self, peer_id: PeerId, endpoint: ConnectedPoint)
Indicates the behaviour that we connected to the node with the given peer id through the given endpoint.
fn inject_disconnected(&mut self, peer_id: &PeerId, endpoint: ConnectedPoint)
Indicates the behaviour that we disconnected from the node with the given peer id. The endpoint is the one we used to be connected to.
fn inject_node_event(
&mut self,
peer_id: PeerId,
event: <<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent
)
&mut self,
peer_id: PeerId,
event: <<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent
)
Indicates the behaviour that the node with the given peer id has generated an event for us.
Note: This method is only called for events generated by the protocols handler.
fn poll(
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent, Self::OutEvent>>
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent, Self::OutEvent>>
Polls for things that swarm should do.
This API mimics the API of the Stream
trait.
Provided methods
fn inject_replaced(
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
Indicates the behaviour that we replace the connection from the node with another.
fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
Indicates to the behaviour that we tried to reach an address, but failed.
If we were trying to reach a specific node, its ID is passed as parameter. If this is the
last address to attempt for the given node, then inject_dial_failure
is called afterwards.
fn inject_dial_failure(&mut self, _peer_id: &PeerId)
Indicates to the behaviour that we tried to dial all the addresses known for a node, but failed.
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
Indicates to the behaviour that we have started listening on a new multiaddr.
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
Indicates to the behaviour that a new multiaddr we were listening on has expired, which means that we are no longer listening in it.
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
Indicates to the behaviour that we have discovered a new external address for us.
Implementors
impl<TBehaviour> NetworkBehaviour for Toggle<TBehaviour> where
TBehaviour: NetworkBehaviour,
[src]
TBehaviour: NetworkBehaviour,
type ProtocolsHandler = ToggleIntoProtoHandler<<TBehaviour as NetworkBehaviour>::ProtocolsHandler>
type OutEvent = <TBehaviour as NetworkBehaviour>::OutEvent
fn new_handler(
&mut self
) -> <Toggle<TBehaviour> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <Toggle<TBehaviour> as NetworkBehaviour>::ProtocolsHandler
fn addresses_of_peer(&mut self, peer_id: &PeerId) -> Vec<Multiaddr>
[src]
fn inject_connected(&mut self, peer_id: PeerId, endpoint: ConnectedPoint)
[src]
fn inject_disconnected(&mut self, peer_id: &PeerId, endpoint: ConnectedPoint)
[src]
fn inject_replaced(
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
[src]
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
fn inject_node_event(
&mut self,
peer_id: PeerId,
event: <<<Toggle<TBehaviour> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent
)
[src]
&mut self,
peer_id: PeerId,
event: <<<Toggle<TBehaviour> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent
)
fn inject_addr_reach_failure(
&mut self,
peer_id: Option<&PeerId>,
addr: &Multiaddr,
error: &dyn Error
)
[src]
&mut self,
peer_id: Option<&PeerId>,
addr: &Multiaddr,
error: &dyn Error
)
fn inject_dial_failure(&mut self, peer_id: &PeerId)
[src]
fn inject_new_listen_addr(&mut self, addr: &Multiaddr)
[src]
fn inject_expired_listen_addr(&mut self, addr: &Multiaddr)
[src]
fn inject_new_external_addr(&mut self, addr: &Multiaddr)
[src]
fn poll(
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<<Toggle<TBehaviour> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent, <Toggle<TBehaviour> as NetworkBehaviour>::OutEvent>>
[src]
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<<Toggle<TBehaviour> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent, <Toggle<TBehaviour> as NetworkBehaviour>::OutEvent>>
impl<TSubstream> NetworkBehaviour for Floodsub<TSubstream> where
TSubstream: AsyncRead + AsyncWrite,
[src]
TSubstream: AsyncRead + AsyncWrite,
type ProtocolsHandler = OneShotHandler<TSubstream, FloodsubConfig, FloodsubRpc, InnerMessage>
type OutEvent = FloodsubEvent
fn new_handler(
&mut self
) -> <Floodsub<TSubstream> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <Floodsub<TSubstream> as NetworkBehaviour>::ProtocolsHandler
fn addresses_of_peer(&mut self, &PeerId) -> Vec<Multiaddr>
[src]
fn inject_connected(&mut self, id: PeerId, ConnectedPoint)
[src]
fn inject_disconnected(&mut self, id: &PeerId, ConnectedPoint)
[src]
fn inject_node_event(&mut self, propagation_source: PeerId, event: InnerMessage)
[src]
fn poll(
&mut self,
&mut PollParameters
) -> Async<NetworkBehaviourAction<<<Floodsub<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Floodsub<TSubstream> as NetworkBehaviour>::OutEvent>>
[src]
&mut self,
&mut PollParameters
) -> Async<NetworkBehaviourAction<<<Floodsub<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Floodsub<TSubstream> as NetworkBehaviour>::OutEvent>>
fn inject_replaced(
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
[src]
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
[src]
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
fn inject_dial_failure(&mut self, _peer_id: &PeerId)
[src]
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
[src]
impl<TSubstream> NetworkBehaviour for Identify<TSubstream> where
TSubstream: AsyncRead + AsyncWrite,
[src]
TSubstream: AsyncRead + AsyncWrite,
type ProtocolsHandler = ProtocolsHandlerSelect<IdentifyListenHandler<TSubstream>, PeriodicIdHandler<TSubstream>>
type OutEvent = IdentifyEvent
fn new_handler(
&mut self
) -> <Identify<TSubstream> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <Identify<TSubstream> as NetworkBehaviour>::ProtocolsHandler
fn addresses_of_peer(&mut self, &PeerId) -> Vec<Multiaddr>
[src]
fn inject_connected(&mut self, peer_id: PeerId, endpoint: ConnectedPoint)
[src]
fn inject_disconnected(&mut self, peer_id: &PeerId, ConnectedPoint)
[src]
fn inject_node_event(
&mut self,
peer_id: PeerId,
event: <<Identify<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::OutEvent
)
[src]
&mut self,
peer_id: PeerId,
event: <<Identify<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::OutEvent
)
fn poll(
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Identify<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Identify<TSubstream> as NetworkBehaviour>::OutEvent>>
[src]
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Identify<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Identify<TSubstream> as NetworkBehaviour>::OutEvent>>
fn inject_replaced(
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
[src]
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
[src]
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
fn inject_dial_failure(&mut self, _peer_id: &PeerId)
[src]
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
[src]
impl<TSubstream> NetworkBehaviour for Kademlia<TSubstream> where
TSubstream: AsyncRead + AsyncWrite,
[src]
TSubstream: AsyncRead + AsyncWrite,
type ProtocolsHandler = KademliaHandler<TSubstream, QueryId>
type OutEvent = KademliaOut
fn new_handler(
&mut self
) -> <Kademlia<TSubstream> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <Kademlia<TSubstream> as NetworkBehaviour>::ProtocolsHandler
fn addresses_of_peer(&mut self, peer_id: &PeerId) -> Vec<Multiaddr>
[src]
fn inject_connected(&mut self, id: PeerId, endpoint: ConnectedPoint)
[src]
fn inject_addr_reach_failure(
&mut self,
peer_id: Option<&PeerId>,
addr: &Multiaddr,
&dyn Error
)
[src]
&mut self,
peer_id: Option<&PeerId>,
addr: &Multiaddr,
&dyn Error
)
fn inject_dial_failure(&mut self, peer_id: &PeerId)
[src]
fn inject_disconnected(&mut self, id: &PeerId, _old_endpoint: ConnectedPoint)
[src]
fn inject_replaced(
&mut self,
peer_id: PeerId,
_old: ConnectedPoint,
new_endpoint: ConnectedPoint
)
[src]
&mut self,
peer_id: PeerId,
_old: ConnectedPoint,
new_endpoint: ConnectedPoint
)
fn inject_node_event(
&mut self,
source: PeerId,
event: KademliaHandlerEvent<QueryId>
)
[src]
&mut self,
source: PeerId,
event: KademliaHandlerEvent<QueryId>
)
fn poll(
&mut self,
parameters: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Kademlia<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Kademlia<TSubstream> as NetworkBehaviour>::OutEvent>>
[src]
&mut self,
parameters: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Kademlia<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Kademlia<TSubstream> as NetworkBehaviour>::OutEvent>>
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
[src]
impl<TSubstream> NetworkBehaviour for Mdns<TSubstream> where
TSubstream: AsyncRead + AsyncWrite,
[src]
TSubstream: AsyncRead + AsyncWrite,
type ProtocolsHandler = DummyProtocolsHandler<TSubstream>
type OutEvent = MdnsEvent
fn new_handler(
&mut self
) -> <Mdns<TSubstream> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <Mdns<TSubstream> as NetworkBehaviour>::ProtocolsHandler
fn addresses_of_peer(&mut self, peer_id: &PeerId) -> Vec<Multiaddr>
[src]
fn inject_connected(&mut self, PeerId, ConnectedPoint)
[src]
fn inject_disconnected(&mut self, &PeerId, ConnectedPoint)
[src]
fn inject_node_event(
&mut self,
PeerId,
_ev: <<Mdns<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::OutEvent
)
[src]
&mut self,
PeerId,
_ev: <<Mdns<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::OutEvent
)
fn poll(
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Mdns<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Mdns<TSubstream> as NetworkBehaviour>::OutEvent>>
[src]
&mut self,
params: &mut PollParameters
) -> Async<NetworkBehaviourAction<<<Mdns<TSubstream> as NetworkBehaviour>::ProtocolsHandler as ProtocolsHandler>::InEvent, <Mdns<TSubstream> as NetworkBehaviour>::OutEvent>>
fn inject_replaced(
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
[src]
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
[src]
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
fn inject_dial_failure(&mut self, _peer_id: &PeerId)
[src]
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
[src]
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
[src]
impl<TSubstream> NetworkBehaviour for Ping<TSubstream> where
TSubstream: AsyncRead + AsyncWrite,
[src]
TSubstream: AsyncRead + AsyncWrite,
type ProtocolsHandler = PingHandler<TSubstream>
type OutEvent = PingEvent
fn new_handler(
&mut self
) -> <Ping<TSubstream> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <Ping<TSubstream> as NetworkBehaviour>::ProtocolsHandler
fn addresses_of_peer(&mut self, _peer_id: &PeerId) -> Vec<Multiaddr>
[src]
fn inject_connected(&mut self, PeerId, ConnectedPoint)
[src]
fn inject_disconnected(&mut self, &PeerId, ConnectedPoint)
[src]
fn inject_node_event(
&mut self,
peer: PeerId,
result: Result<PingSuccess, PingFailure>
)
[src]
&mut self,
peer: PeerId,
result: Result<PingSuccess, PingFailure>
)
fn poll(
&mut self,
&mut PollParameters
) -> Async<NetworkBehaviourAction<Void, PingEvent>>
[src]
&mut self,
&mut PollParameters
) -> Async<NetworkBehaviourAction<Void, PingEvent>>
fn inject_replaced(
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
[src]
&mut self,
peer_id: PeerId,
closed_endpoint: ConnectedPoint,
new_endpoint: ConnectedPoint
)
fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
[src]
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)