Crate libp2p_swarm

source ·
Expand description

High-level network manager.

A Swarm contains the state of the network as a whole. The entire behaviour of a libp2p network can be controlled through the Swarm. The Swarm struct contains all active and pending connections to remotes and manages the state of all the substreams that have been opened, and all the upgrades that were built upon these substreams.

Initializing a Swarm

Creating a Swarm requires three things:

  1. A network identity of the local node in form of a PeerId.
  2. An implementation of the Transport trait. This is the type that will be used in order to reach nodes on the network based on their address. See the transport module for more information.
  3. An implementation of the NetworkBehaviour trait. This is a state machine that defines how the swarm should behave once it is connected to a node.

Network Behaviour

The NetworkBehaviour trait is implemented on types that indicate to the swarm how it should behave. This includes which protocols are supported and which nodes to try to connect to. It is the NetworkBehaviour that controls what happens on the network. Multiple types that implement NetworkBehaviour can be composed into a single behaviour.

Protocols Handler

The ConnectionHandler trait defines how each active connection to a remote should behave: how to handle incoming substreams, which protocols are supported, when to open a new outbound substream, etc.

Re-exports

pub use behaviour::CloseConnection;
pub use behaviour::NetworkBehaviour;
pub use behaviour::NetworkBehaviourAction;
pub use behaviour::NotifyHandler;
pub use behaviour::PollParameters;
pub use handler::ConnectionHandler;
pub use handler::ConnectionHandlerEvent;
pub use handler::ConnectionHandlerUpgrErr;
pub use handler::IntoConnectionHandler;
pub use handler::KeepAlive;
pub use handler::SubstreamProtocol;

Modules

Once a connection to a remote peer is established, a ConnectionHandler negotiates and handles one or more specific protocols on the connection.

Structs

An record in a prioritised list of addresses.
Network connection information.
Implementation of ConnectionHandler that combines two protocols into one.
Information about a connection limit.
The configurable connection limits.
Implementation of IntoConnectionHandler that combines two protocols into one.
Information about the connections obtained by Swarm::network_info().
A ConnectionHandler that opens a new substream for each request.
Configuration parameters for the OneShotHandler
Contains the state of the network, plus the way it should behave.
A SwarmBuilder provides an API for configuring and constructing a Swarm.
Parameters passed to poll(), that the NetworkBehaviour has access to.

Enums

The result of adding an address to an ordered list of addresses with associated scores.
The “score” of an address w.r.t. an ordered collection of addresses.
Errors that can occur in the context of an established Connection.
The possible failures of dialing.
Errors that can occur in the context of a pending Connection.
Event generated by the Swarm.

Traits

Implemented on objects that can run a Future in the background.

Type Definitions

Substream for which a protocol has been chosen.
Errors that can occur in the context of a pending incoming Connection.
Errors that can occur in the context of a pending outgoing Connection.

Derive Macros

Generates a delegating NetworkBehaviour implementation for the struct this is used for. See the trait documentation for better description.