pub enum NetworkBehaviourAction<TInEvent, TOutEvent> {
GenerateEvent(TOutEvent),
DialAddress {
address: Multiaddr,
},
DialPeer {
peer_id: PeerId,
condition: DialPeerCondition,
},
DisconnectPeer {
peer_id: PeerId,
},
NotifyHandler {
peer_id: PeerId,
handler: NotifyHandler,
event: TInEvent,
},
ReportObservedAddr {
address: Multiaddr,
score: AddressScore,
},
}Expand description
An action that a NetworkBehaviour can trigger in the Swarm
in whose context it is executing.
Variants§
GenerateEvent(TOutEvent)
Instructs the Swarm to return an event when it is being polled.
DialAddress
Instructs the swarm to dial the given multiaddress, with no knowledge of the PeerId that
may be reached.
DialPeer
Instructs the swarm to dial a known PeerId.
The addresses_of_peer method is called to determine which addresses to attempt to reach.
If we were already trying to dial this node, the addresses that are not yet in the queue of addresses to try are added back to this queue.
On success, NetworkBehaviour::inject_connected is invoked.
On failure, NetworkBehaviour::inject_dial_failure is invoked.
Fields
condition: DialPeerConditionThe condition for initiating a new dialing attempt.
DisconnectPeer
Instructs the swarm to close connection the peer with PeerId.
The connection status flag will be update with disconnect timeout
NotifyHandler
Instructs the Swarm to send an event to the handler dedicated to a
connection with a peer.
If the Swarm is connected to the peer, the message is delivered to the
ProtocolsHandler instance identified by the peer ID and connection ID.
If the specified connection no longer exists, the event is silently dropped.
Typically the connection ID given is the same as the one passed to
NetworkBehaviour::inject_event, i.e. whenever the behaviour wishes to
respond to a request on the same connection (and possibly the same
substream, as per the implementation of ProtocolsHandler).
Note that even if the peer is currently connected, connections can get closed at any time and thus the event may not reach a handler.
Fields
handler: NotifyHandlerThe options w.r.t. which connection handler to notify of the event.
event: TInEventThe event to send.
ReportObservedAddr
Informs the Swarm about an address observed by a remote for
the local node by which the local node is supposedly publicly
reachable.
It is advisable to issue ReportObservedAddr actions at a fixed frequency
per node. This way address information will be more accurate over time
and individual outliers carry less weight.
Fields
score: AddressScoreThe score to associate with this observation, i.e. an indicator for the trusworthiness of this address relative to other observed addresses.
Implementations§
Source§impl<TInEvent, TOutEvent> NetworkBehaviourAction<TInEvent, TOutEvent>
impl<TInEvent, TOutEvent> NetworkBehaviourAction<TInEvent, TOutEvent>
Sourcepub fn map_in<E>(
self,
f: impl FnOnce(TInEvent) -> E,
) -> NetworkBehaviourAction<E, TOutEvent>
pub fn map_in<E>( self, f: impl FnOnce(TInEvent) -> E, ) -> NetworkBehaviourAction<E, TOutEvent>
Map the handler event.
Sourcepub fn map_out<E>(
self,
f: impl FnOnce(TOutEvent) -> E,
) -> NetworkBehaviourAction<TInEvent, E>
pub fn map_out<E>( self, f: impl FnOnce(TOutEvent) -> E, ) -> NetworkBehaviourAction<TInEvent, E>
Map the event the swarm will return.
Trait Implementations§
Auto Trait Implementations§
impl<TInEvent, TOutEvent> Freeze for NetworkBehaviourAction<TInEvent, TOutEvent>
impl<TInEvent, TOutEvent> RefUnwindSafe for NetworkBehaviourAction<TInEvent, TOutEvent>where
TOutEvent: RefUnwindSafe,
TInEvent: RefUnwindSafe,
impl<TInEvent, TOutEvent> Send for NetworkBehaviourAction<TInEvent, TOutEvent>
impl<TInEvent, TOutEvent> Sync for NetworkBehaviourAction<TInEvent, TOutEvent>
impl<TInEvent, TOutEvent> Unpin for NetworkBehaviourAction<TInEvent, TOutEvent>
impl<TInEvent, TOutEvent> UnwindSafe for NetworkBehaviourAction<TInEvent, TOutEvent>where
TOutEvent: UnwindSafe,
TInEvent: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more