[][src]Struct libp2p::swarm::ExpandedSwarm

pub struct ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo = PeerId> { /* fields omitted */ }

Contains the state of the network, plus the way it should behave.

Methods

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TBehaviour: NetworkBehaviour<ProtocolsHandler = THandler>,
    TConnInfo: ConnectionInfo<PeerId = PeerId> + Debug + Clone + Send + 'static,
    THandler: IntoProtocolsHandler + Send + 'static,
    THandlerErr: Error + Send + 'static,
    TInEvent: Send + 'static,
    TOutEvent: Send + 'static,
    <THandler as IntoProtocolsHandler>::Handler: ProtocolsHandler,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent == TInEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent == TOutEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error == THandlerErr, 
[src]

pub fn new<TTransport, TMuxer>(
    transport: TTransport,
    behaviour: TBehaviour,
    local_peer_id: PeerId
) -> ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TMuxer: StreamMuxer + Send + Sync + 'static,
    TTransport: Transport<Output = (TConnInfo, TMuxer)> + Clone + Send + Sync + 'static,
    <TMuxer as StreamMuxer>::OutboundSubstream: Send,
    <TMuxer as StreamMuxer>::OutboundSubstream: 'static,
    <TMuxer as StreamMuxer>::OutboundSubstream: Send,
    <TMuxer as StreamMuxer>::OutboundSubstream: 'static,
    <TMuxer as StreamMuxer>::Substream: Send,
    <TMuxer as StreamMuxer>::Substream: 'static,
    <TTransport as Transport>::Error: Send,
    <TTransport as Transport>::Error: Sync,
    <TTransport as Transport>::Error: 'static,
    <TTransport as Transport>::Listener: Send,
    <TTransport as Transport>::Listener: 'static,
    <TTransport as Transport>::ListenerUpgrade: Send,
    <TTransport as Transport>::ListenerUpgrade: 'static,
    <TTransport as Transport>::Dial: Send,
    <TTransport as Transport>::Dial: 'static, 
[src]

Builds a new Swarm.

pub fn listen_on(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    addr: Multiaddr
) -> Result<ListenerId, TransportError<Error>>
[src]

Starts listening on the given address.

Returns an error if the address is not supported.

pub fn remove_listener(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    id: ListenerId
) -> Result<(), ()>
[src]

Remove some listener.

Returns Ok(()) if there was a listener with this ID.

pub fn dial_addr(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    addr: Multiaddr
) -> Result<(), TransportError<Error>>
[src]

Tries to dial the given address.

Returns an error if the address is not supported.

pub fn dial(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    peer_id: PeerId
)
[src]

Tries to reach the given peer using the elements in the topology.

Has no effect if we are already connected to that peer, or if no address is known for the peer.

pub fn listeners(
    me: &ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>
) -> impl Iterator<Item = &Multiaddr>
[src]

Returns an iterator that produces the list of addresses we're listening on.

pub fn external_addresses(
    me: &ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>
) -> impl Iterator<Item = &Multiaddr>
[src]

Returns an iterator that produces the list of addresses that other nodes can use to reach us.

pub fn local_peer_id(
    me: &ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>
) -> &PeerId
[src]

Returns the peer ID of the swarm passed as parameter.

pub fn add_external_address(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    addr: Multiaddr
)
[src]

Adds an external address.

An external address is an address we are listening on but that accounts for things such as NAT traversal.

pub fn connection_info(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    peer_id: &PeerId
) -> Option<TConnInfo>
[src]

Returns the connection info of a node, or None if we're not connected to it.

pub fn ban_peer_id(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    peer_id: PeerId
)
[src]

Bans a peer by its peer ID.

Any incoming connection and any dialing attempt will immediately be rejected. This function has no effect is the peer is already banned.

pub fn unban_peer_id(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    peer_id: PeerId
)
[src]

Unbans a peer.

pub async fn next_event(
    &'_ mut self
) -> SwarmEvent<<TBehaviour as NetworkBehaviour>::OutEvent>
[src]

Returns the next event that happens in the Swarm.

Includes events from the NetworkBehaviour but also events about the connections status.

pub async fn next(&'_ mut self) -> <TBehaviour as NetworkBehaviour>::OutEvent[src]

Returns the next event produced by the [NetworkBehaviour].

Trait Implementations

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Deref for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>[src]

type Target = TBehaviour

The resulting type after dereferencing.

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> DerefMut for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>[src]

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> FusedStream for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TBehaviour: NetworkBehaviour<ProtocolsHandler = THandler>,
    TConnInfo: ConnectionInfo<PeerId = PeerId> + Debug + Clone + Send + 'static,
    THandler: IntoProtocolsHandler + Send + 'static,
    THandlerErr: Error + Send + 'static,
    TInEvent: Send + 'static,
    TOutEvent: Send + 'static,
    <THandler as IntoProtocolsHandler>::Handler: ProtocolsHandler,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent == TInEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent == TOutEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error == THandlerErr, 
[src]

the stream of behaviour events never terminates, so we can implement fused for it

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Stream for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TBehaviour: NetworkBehaviour<ProtocolsHandler = THandler>,
    TConnInfo: ConnectionInfo<PeerId = PeerId> + Debug + Clone + Send + 'static,
    THandler: IntoProtocolsHandler + Send + 'static,
    THandlerErr: Error + Send + 'static,
    TInEvent: Send + 'static,
    TOutEvent: Send + 'static,
    <THandler as IntoProtocolsHandler>::Handler: ProtocolsHandler,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent == TInEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent == TOutEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error == THandlerErr, 
[src]

type Item = <TBehaviour as NetworkBehaviour>::OutEvent

Values yielded by the stream.

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Unpin for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>[src]

Auto Trait Implementations

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo = PeerId> !RefUnwindSafe for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Send for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TBehaviour: Send,
    TConnInfo: Send,
    THandler: Send,
    THandlerErr: Send,
    TInEvent: Send,
    TOutEvent: Send

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo = PeerId> !Sync for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>

impl<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo = PeerId> !UnwindSafe for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>

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> StreamExt for T where
    T: Stream + ?Sized
[src]

impl<T> StreamExt for T where
    T: Stream + ?Sized
[src]

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<S, T, E> TryStream for S where
    S: Stream<Item = Result<T, E>> + ?Sized
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

impl<S> TryStreamExt for S where
    S: TryStream + ?Sized
[src]

impl<S> TryStreamExt for S where
    S: TryStream
[src]

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