[][src]Module libp2p::swarm

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:

  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 [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

protocols_handler

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

toggle

Structs

DummyBehaviour

Dummy implementation of [NetworkBehaviour] that doesn't do anything.

ExpandedSwarm

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

IntoProtocolsHandlerSelect

Implementation of IntoProtocolsHandler that combines two protocols into one.

OneShotHandler

Implementation of ProtocolsHandler that opens a new substream for each individual message.

ProtocolsHandlerSelect

Implementation of ProtocolsHandler that combines two protocols into one.

SubstreamProtocol

Configuration of inbound or outbound substream protocol(s) for a [ProtocolsHandler].

SwarmBuilder
SwarmPollParameters

Parameters passed to poll(), that the NetworkBehaviour has access to.

Enums

KeepAlive

How long the connection should be kept alive.

NetworkBehaviourAction

An action that a [NetworkBehaviour] can trigger in the Swarm in whose context it is executing.

ProtocolsHandlerEvent

Event produced by a handler.

ProtocolsHandlerUpgrErr

Error that can happen on an outbound substream opening attempt.

SwarmEvent

Event generated by the Swarm.

Traits

IntoProtocolsHandler

Prototype for a ProtocolsHandler.

NetworkBehaviour

A behaviour for the network. Allows customizing the swarm.

NetworkBehaviourEventProcess

When deriving [NetworkBehaviour] this trait must be implemented for all the possible event types generated by the inner behaviours.

PollParameters

Parameters passed to poll(), that the NetworkBehaviour has access to.

ProtocolsHandler

A handler for a set of protocols used on a connection with a remote.

Type Definitions

NegotiatedSubstream

Substream for which a protocol has been chosen.

Swarm

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