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

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

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

Implementations

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo, THandleErr> ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TBehaviour: NetworkBehaviour<ProtocolsHandler = THandler>,
    TConnInfo: ConnectionInfo<PeerId = PeerId> + Debug + Clone + Send + 'static,
    THandleErr: Error + Send + 'static,
    THandler: IntoProtocolsHandler + Send + 'static,
    TInEvent: Clone + 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 == THandleErr, 
[src]

pub fn new<TTransport, TMuxer>(
    transport: TTransport,
    behaviour: TBehaviour,
    local_peer_id: PeerId
) -> ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, 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 network_info(
    me: &ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo>
) -> NetworkInfo
[src]

Returns information about the Network underlying the Swarm.

pub fn listen_on(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, 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, 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, TConnInfo>,
    addr: Multiaddr
) -> Result<(), ConnectionLimit>
[src]

Initiates a new dialing attempt to the given address.

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

Initiates a new dialing attempt to the given peer.

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

Returns the connection info for an arbitrary connection with the peer, or None if there is no connection to that peer.

pub fn ban_peer_id(
    me: &mut ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, 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 if the peer is already banned.

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

Unbans a peer.

pub async fn next_event(
    &'_ mut self
) -> SwarmEvent<<TBehaviour as NetworkBehaviour>::OutEvent, THandleErr>
[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, TConnInfo> Deref for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TConnInfo: ConnectionInfo<PeerId = PeerId>,
    THandler: IntoProtocolsHandler
[src]

type Target = TBehaviour

The resulting type after dereferencing.

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> DerefMut for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TConnInfo: ConnectionInfo<PeerId = PeerId>,
    THandler: IntoProtocolsHandler
[src]

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> FusedStream for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TBehaviour: NetworkBehaviour<ProtocolsHandler = THandler>,
    TConnInfo: ConnectionInfo<PeerId = PeerId> + Debug + Clone + Send + 'static,
    THandler: IntoProtocolsHandler + Send + 'static,
    TInEvent: Clone + 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, 
[src]

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

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> Stream for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TBehaviour: NetworkBehaviour<ProtocolsHandler = THandler>,
    TConnInfo: ConnectionInfo<PeerId = PeerId> + Debug + Clone + Send + 'static,
    THandler: IntoProtocolsHandler + Send + 'static,
    TInEvent: Clone + 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, 
[src]

type Item = <TBehaviour as NetworkBehaviour>::OutEvent

Values yielded by the stream.

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> Unpin for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TConnInfo: ConnectionInfo<PeerId = PeerId>,
    THandler: IntoProtocolsHandler
[src]

Auto Trait Implementations

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

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> Send for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo> where
    TBehaviour: Send,
    TConnInfo: Send,
    TInEvent: Send,
    TOutEvent: Send,
    <<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::Error: Send,
    <THandler as IntoProtocolsHandler>::Handler: ProtocolsHandler

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

impl<TBehaviour, TInEvent, TOutEvent, THandler, TConnInfo = PeerId> !UnwindSafe for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler, 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<St> StreamExt for St where
    St: 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>,