Struct libp2p_swarm::Swarm

source ·
pub struct Swarm<TBehaviour>where
    TBehaviour: NetworkBehaviour,
{ /* private fields */ }
Expand description

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

Note: Needs to be polled via <Swarm as Stream> in order to make progress.

Implementations§

Builds a new Swarm.

Returns information about the connections underlying the Swarm.

Starts listening on the given address. Returns an error if the address is not supported.

Listeners report their new listening addresses as SwarmEvent::NewListenAddr. Depending on the underlying transport, one listener may have multiple listening addresses.

Remove some listener.

Returns true if there was a listener with this ID, false otherwise.

Dial a known or unknown peer.

See also DialOpts.

let mut swarm = Swarm::new(
  DummyTransport::new().boxed(),
  DummyBehaviour::default(),
  PeerId::random(),
);

// Dial a known peer.
swarm.dial(PeerId::random());

// Dial an unknown peer.
swarm.dial("/ip6/::1/tcp/12345".parse::<Multiaddr>().unwrap());

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

Returns the peer ID of the swarm passed as parameter.

Returns an iterator for AddressRecords of external addresses of the local node, in decreasing order of their current score.

Adds an external address record for the local node.

An external address is an address of the local node known to be (likely) reachable for other nodes, possibly taking into account NAT. The external addresses of the local node may be shared with other nodes by the NetworkBehaviour.

The associated score determines both the position of the address in the list of external addresses (which can determine the order in which addresses are used to connect to) as well as how long the address is retained in the list, depending on how frequently it is reported by the NetworkBehaviour via NetworkBehaviourAction::ReportObservedAddr or explicitly through this method.

Removes an external address of the local node, regardless of its current score. See Swarm::add_external_address for details.

Returns true if the address existed and was removed, false otherwise.

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.

Unbans a peer.

Disconnects a peer by its peer ID, closing all connections to said peer.

Returns Ok(()) if there was one or more established connections to the peer.

Note: Closing a connection via Swarm::disconnect_peer_id does not inform the corresponding ConnectionHandler. Closing a connection via a ConnectionHandler can be done either in a collaborative manner across ConnectionHandlers with ConnectionHandler::connection_keep_alive or directly with ConnectionHandlerEvent::Close.

Checks whether there is an established connection to a peer.

Returns the currently connected peers.

Returns a reference to the provided NetworkBehaviour.

Returns a mutable reference to the provided NetworkBehaviour.

Trait Implementations§

The stream of swarm events never terminates, so we can implement fused for it.

Returns true if the stream should no longer be polled.

Stream of events returned by Swarm.

Includes events from the NetworkBehaviour as well as events about connection and listener status. See SwarmEvent for details.

Note: This stream is infinite and it is guaranteed that Stream::poll_next will never return Poll::Ready(None).

Values yielded by the stream.
Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
Creates a future that resolves to the next item in the stream. Read more
Converts this stream into a future of (next_item, tail_of_stream). If the stream terminates, then the next item is None. Read more
Maps this stream’s items to a different type, returning a new stream of the resulting type. Read more
Creates a stream which gives the current iteration count as well as the next value. Read more
Filters the values produced by this stream according to the provided asynchronous predicate. Read more
Filters the values produced by this stream while simultaneously mapping them to a different type according to the provided asynchronous closure. Read more
Computes from this stream’s items new items of a different type using an asynchronous closure. Read more
Transforms a stream into a collection, returning a future representing the result of that computation. Read more
Converts a stream of pairs into a future, which resolves to pair of containers. Read more
Concatenate all items of a stream into a single extendable destination, returning a future representing the end result. Read more
Drives the stream to completion, counting the number of items. Read more
Repeats a stream endlessly. Read more
Execute an accumulating asynchronous computation over a stream, collecting all the values into one final result. Read more
Execute predicate over asynchronous stream, and return true if any element in stream satisfied a predicate. Read more
Execute predicate over asynchronous stream, and return true if all element in stream satisfied a predicate. Read more
Flattens a stream of streams into just one continuous stream. Read more
Flattens a stream of streams into just one continuous stream. Polls inner streams concurrently. Read more
Maps a stream like StreamExt::map but flattens nested Streams. Read more
Maps a stream like StreamExt::map but flattens nested Streams and polls them concurrently, yielding items in any order, as they made available. Read more
Combinator similar to StreamExt::fold that holds internal state and produces a new stream. Read more
Skip elements on this stream while the provided asynchronous predicate resolves to true. Read more
Take elements from this stream while the provided asynchronous predicate resolves to true. Read more
Take elements from this stream until the provided future resolves. Read more
Runs this stream to completion, executing the provided asynchronous closure for each element on the stream. Read more
Runs this stream to completion, executing the provided asynchronous closure for each element on the stream concurrently as elements become available. Read more
Creates a new stream of at most n items of the underlying stream. Read more
Creates a new stream which skips n items of the underlying stream. Read more
Fuse a stream such that poll_next will never again be called once it has finished. This method can be used to turn any Stream into a FusedStream. Read more
Borrows a stream, rather than consuming it. Read more
Catches unwinding panics while polling the stream. Read more
Wrap the stream in a Box, pinning it. Read more
Wrap the stream in a Box, pinning it. Read more
An adaptor for creating a buffered list of pending futures. Read more
An adaptor for creating a buffered list of pending futures (unordered). Read more
An adapter for zipping two streams together. Read more
Adapter for chaining two streams. Read more
Creates a new stream which exposes a peek method. Read more
An adaptor for chunking up items of the stream inside a vector. Read more
An adaptor for chunking up ready items of the stream inside a vector. Read more
A future that completes after the given stream has been fully processed into the sink and the sink has been flushed and closed. Read more
Splits this Stream + Sink object into separate Sink and Stream objects. Read more
Do something with each item of this stream, afterwards passing it on. Read more
Wrap this stream in an Either stream, making it the left-hand variant of that Either. Read more
Wrap this stream in an Either stream, making it the right-hand variant of that Either. Read more
A convenience method for calling Stream::poll_next on Unpin stream types. Read more
Returns a Future that resolves when the next item in this stream is ready. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.