[][src]Enum libp2p_swarm::NetworkBehaviourAction

pub enum NetworkBehaviourAction<TInEvent, TOutEvent> {
    GenerateEvent(TOutEvent),
    DialAddress {
        address: Multiaddr,
    },
    DialPeer {
        peer_id: PeerId,
        condition: DialPeerCondition,
    },
    NotifyHandler {
        peer_id: PeerId,
        handler: NotifyHandler,
        event: TInEvent,
    },
    ReportObservedAddr {
        address: Multiaddr,
    },
}

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.

Fields of DialAddress

address: Multiaddr

The address to dial.

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 of DialPeer

peer_id: PeerId

The peer to try reach.

condition: DialPeerCondition

The condition for initiating a new dialing attempt.

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 of NotifyHandler

peer_id: PeerId

The peer for whom a ProtocolsHandler should be notified.

handler: NotifyHandler

The ID of the connection whose ProtocolsHandler to notify.

event: TInEvent

The event to send.

ReportObservedAddr

Informs the Swarm about a multi-address observed by a remote for the local node.

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 of ReportObservedAddr

address: Multiaddr

The observed address of the local node.

Implementations

impl<TInEvent, TOutEvent> NetworkBehaviourAction<TInEvent, TOutEvent>[src]

pub fn map_in<E>(
    self,
    f: impl FnOnce(TInEvent) -> E
) -> NetworkBehaviourAction<E, TOutEvent>
[src]

Map the handler event.

pub fn map_out<E>(
    self,
    f: impl FnOnce(TOutEvent) -> E
) -> NetworkBehaviourAction<TInEvent, E>
[src]

Map the event the swarm will return.

Trait Implementations

impl<TInEvent: Clone, TOutEvent: Clone> Clone for NetworkBehaviourAction<TInEvent, TOutEvent>[src]

impl<TInEvent: Debug, TOutEvent: Debug> Debug for NetworkBehaviourAction<TInEvent, TOutEvent>[src]

Auto Trait Implementations

impl<TInEvent, TOutEvent> RefUnwindSafe for NetworkBehaviourAction<TInEvent, TOutEvent> where
    TInEvent: RefUnwindSafe,
    TOutEvent: RefUnwindSafe

impl<TInEvent, TOutEvent> Send for NetworkBehaviourAction<TInEvent, TOutEvent> where
    TInEvent: Send,
    TOutEvent: Send

impl<TInEvent, TOutEvent> Sync for NetworkBehaviourAction<TInEvent, TOutEvent> where
    TInEvent: Sync,
    TOutEvent: Sync

impl<TInEvent, TOutEvent> Unpin for NetworkBehaviourAction<TInEvent, TOutEvent> where
    TInEvent: Unpin,
    TOutEvent: Unpin

impl<TInEvent, TOutEvent> UnwindSafe for NetworkBehaviourAction<TInEvent, TOutEvent> where
    TInEvent: UnwindSafe,
    TOutEvent: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,