Expand description
High level manager of the network.
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:
- A network identity of the local node in form of a
PeerId
. - 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 thetransport
module for more information. - 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 ProtocolsHandler
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.
Modules
Once a connection to a remote peer is established, a ProtocolsHandler
negotiates
and handles one or more specific protocols on the connection.
Structs
An record in a prioritised list of addresses.
Dummy implementation of NetworkBehaviour
that doesn’t do anything.
Contains the state of the network, plus the way it should behave.
Implementation of IntoProtocolsHandler
that combines two protocols into one.
A ProtocolsHandler
that opens a new substream for each request.
Configuration parameters for the OneShotHandler
Implementation of ProtocolsHandler
that combines two protocols into one.
Configuration of inbound or outbound substream protocol(s)
for a ProtocolsHandler
.
A SwarmBuilder
provides an API for configuring and constructing a Swarm
,
including the underlying Network
.
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.
The possible failures of ExpandedSwarm::dial
.
The available conditions under which a new dialing attempt to
a peer is initiated when requested by NetworkBehaviourAction::DialPeer
.
How long the connection should be kept alive.
An action that a NetworkBehaviour
can trigger in the Swarm
in whose context it is executing.
The options w.r.t. which connection handler to notify of an event.
Event produced by a handler.
Error that can happen on an outbound substream opening attempt.
Event generated by the Swarm
.
Traits
Prototype for a ProtocolsHandler
.
A behaviour for the network. Allows customizing the swarm.
When deriving NetworkBehaviour
this trait must by default be implemented for all the
possible event types generated by the inner behaviours.
Parameters passed to poll()
, that the NetworkBehaviour
has access to.
A handler for a set of protocols used on a connection with a remote.
Type Definitions
Substream for which a protocol has been chosen.
Contains the state of the network, plus the way it should behave.