Crate swarm
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:
- 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 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.
Modules§
- behaviour
- dial_
opts - dummy
- handler
- Once a connection to a remote peer is established, a
ConnectionHandler
negotiates and handles one or more specific protocols on the connection.
Structs§
- Address
Change FromSwarm
variant that informs the behaviour that theConnectedPoint
of an existing connection has changed.- Config
- Connection
Closed FromSwarm
variant that informs the behaviour about a closed connection to a peer.- Connection
Counters - Network connection information.
- Connection
Denied - A connection was denied.
- Connection
Handler Select - Implementation of
ConnectionHandler
that combines two protocols into one. - Connection
Id - Connection identifier.
- Dial
Failure FromSwarm
variant that informs the behaviour that the dial to a known or unknown node failed.- Expired
Listen Addr FromSwarm
variant that informs the behaviour that a multiaddr we were listening on has expired, which means that we are no longer listening on it.- External
Addr Expired FromSwarm
variant that informs the behaviour that an external address was removed.- External
Addresses - Utility struct for tracking the external addresses of a
Swarm
. - Invalid
Protocol - Listen
Addresses - Utility struct for tracking the addresses a
Swarm
is listening on. - Listen
Failure FromSwarm
variant that informs the behaviour that an error happened on an incoming connection during its initial handshake.- Listen
Opts - Listener
Closed FromSwarm
variant that informs the behaviour that a listener closed.- Listener
Error FromSwarm
variant that informs the behaviour that a listener experienced an error.- Network
Info - Information about the connections obtained by
Swarm::network_info()
. - NewExternal
Addr Candidate FromSwarm
variant that informs the behaviour about a new candidate for an external address for us.- NewExternal
Addr OfPeer FromSwarm
variant that informs the behaviour that a new external address for a remote peer was detected.- NewListen
Addr FromSwarm
variant that informs the behaviour that we have started listening on a new multiaddr.- OneShot
Handler - A
ConnectionHandler
that opens a new substream for each request. - OneShot
Handler Config - Configuration parameters for the
OneShotHandler
- Peer
Addresses - Struct for tracking peers’ external addresses of the
Swarm
. - Stream
- Stream
Protocol - Identifies a protocol for a stream.
- Substream
Protocol - Configuration of inbound or outbound substream protocol(s)
for a
ConnectionHandler
. - Supported
Protocols - Swarm
- Contains the state of the network, plus the way it should behave.
Enums§
- Close
Connection - The options which connections to close.
- Connection
Error - Errors that can occur in the context of an established
Connection
. - Connection
Handler Event - Event produced by a handler.
- Dial
Error - Possible errors when trying to establish or upgrade an outbound connection.
- From
Swarm - Enumeration with the list of the possible events
to pass to
on_swarm_event
. - Listen
Error - Possible errors when upgrading an inbound connection.
- Notify
Handler - The options w.r.t. which connection handler to notify of an event.
- Stream
Upgrade Error - Error that can happen on an outbound substream opening attempt.
- Swarm
Event - Event generated by the
Swarm
. - ToSwarm
- A command issued from a
NetworkBehaviour
for theSwarm
.
Traits§
- Connection
Handler - A handler for a set of protocols used on a connection with a remote.
- Executor
- Implemented on objects that can run a
Future
in the background. - Network
Behaviour - A
NetworkBehaviour
defines the behaviour of the local node on the network.
Type Aliases§
- THandler
ConnectionHandler
of theNetworkBehaviour
for all the protocols theNetworkBehaviour
supports.- THandler
InEvent - Custom event that can be received by the
ConnectionHandler
of theNetworkBehaviour
. - THandler
OutEvent - Custom event that can be produced by the
ConnectionHandler
of theNetworkBehaviour
.
Derive Macros§
- Network
Behaviour - Generates a delegating
NetworkBehaviour
implementation for the struct this is used for. See the trait documentation for better description.