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

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

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

Methods

impl<TTransport, TBehaviour, TMuxer, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> ExpandedSwarm<TTransport, 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,
    TMuxer: StreamMuxer + Send + Sync + 'static,
    TTransport: Transport<Output = (TConnInfo, TMuxer)> + Clone,
    <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: '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,
    <THandler as IntoProtocolsHandler>::Handler: ProtocolsHandler,
    <THandler as IntoProtocolsHandler>::Handler: Send,
    <THandler as IntoProtocolsHandler>::Handler: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundOpenInfo: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundOpenInfo: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol: InboundUpgrade<SubstreamRef<Arc<TMuxer>>>,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::Info: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::Info: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter: 'static,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: Send,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol: OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::Info: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::Info: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter: 'static,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: Send,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: 'static,
    <NodeHandlerWrapper<<THandler as IntoProtocolsHandler>::Handler> as NodeHandler>::OutboundOpenInfo: Send,
    <NodeHandlerWrapper<<THandler as IntoProtocolsHandler>::Handler> as NodeHandler>::OutboundOpenInfo: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent == TInEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent == TOutEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Substream == SubstreamRef<Arc<TMuxer>>,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error == THandlerErr, 
[src]

pub fn new(
    transport: TTransport,
    behaviour: TBehaviour,
    local_peer_id: PeerId
) -> ExpandedSwarm<TTransport, TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>
[src]

Builds a new Swarm.

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

Returns the transport passed when building this object.

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

Starts listening on the given address.

Returns an error if the address is not supported.

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

Remove some listener.

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

Tries to dial the given address.

Returns an error if the address is not supported.

pub fn dial(
    me: &mut ExpandedSwarm<TTransport, 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<TTransport, 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<TTransport, 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<TTransport, 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<TTransport, 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<TTransport, 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<TTransport, 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<TTransport, TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo>,
    peer_id: PeerId
)
[src]

Unbans a peer.

Trait Implementations

impl<TTransport, TBehaviour, TMuxer, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Stream for ExpandedSwarm<TTransport, 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,
    TMuxer: StreamMuxer + Send + Sync + 'static,
    TTransport: Transport<Output = (TConnInfo, TMuxer)> + Clone,
    <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: '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,
    <THandler as IntoProtocolsHandler>::Handler: ProtocolsHandler,
    <THandler as IntoProtocolsHandler>::Handler: Send,
    <THandler as IntoProtocolsHandler>::Handler: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundOpenInfo: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundOpenInfo: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol: InboundUpgrade<SubstreamRef<Arc<TMuxer>>>,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as InboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::Info: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::Info: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter: 'static,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: Send,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol: OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Future: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as OutboundUpgrade<SubstreamRef<Arc<TMuxer>>>>::Error: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::Info: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::Info: 'static,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter: Send,
    <<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter: 'static,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: Send,
    <<<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutboundProtocol as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: 'static,
    <NodeHandlerWrapper<<THandler as IntoProtocolsHandler>::Handler> as NodeHandler>::OutboundOpenInfo: Send,
    <NodeHandlerWrapper<<THandler as IntoProtocolsHandler>::Handler> as NodeHandler>::OutboundOpenInfo: 'static,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent == TInEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent == TOutEvent,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Substream == SubstreamRef<Arc<TMuxer>>,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error == THandlerErr, 
[src]

type Item = <TBehaviour as NetworkBehaviour>::OutEvent

The type of item this stream will yield on success.

type Error = Error

The type of error this stream may generate.

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

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

type Target = TBehaviour

The resulting type after dereferencing.

Auto Trait Implementations

impl<TTransport, TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Send for ExpandedSwarm<TTransport, TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TBehaviour: Send,
    TConnInfo: Send,
    THandler: Send,
    THandlerErr: Send,
    TInEvent: Send,
    TOutEvent: Send,
    TTransport: Send,
    <TTransport as Transport>::Error: Send,
    <TTransport as Transport>::Listener: Send

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

impl<TTransport, TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> Unpin for ExpandedSwarm<TTransport, TBehaviour, TInEvent, TOutEvent, THandler, THandlerErr, TConnInfo> where
    TBehaviour: Unpin,
    TConnInfo: Unpin,
    TInEvent: Unpin,
    TTransport: Unpin,
    <TTransport as Transport>::Listener: Unpin

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

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

Blanket Implementations

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

impl<T> From<T> for T[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<T> Borrow<T> for T where
    T: ?Sized
[src]

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

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

impl<T> Same<T> for T

type Output = T

Should always be Self

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

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