[−][src]Crate susyp2p_core
Transport, protocol upgrade and swarm systems of susyp2p.
This crate contains all the core traits and mechanisms of the transport and swarm systems of susyp2p.
Overview
This documentation focuses on the concepts of susyp2p-core, and is interesting mostly if you want to extend susyp2p with new protocols. If you only want to use susyp2p, you might find the documentation of the main susyp2p crate more interesting.
The main concepts of susyp2p are:
- A
PeerIdis a unique global identifier for a node on the network. Each node must have a differentPeerId. Normally, aPeerIdis the hash of the public key used to negotiate encryption on the communication channel, thereby guaranteeing that they cannot be spoofed. - The
Transporttrait defines how to reach a remote node or listen for incoming remote connections. See thetransportmodule. - The
Swarmstruct 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. - Use the
NetworkBehaviourtrait to customize the behaviour of aSwarm. It is theNetworkBehaviourthat controls what happens on the network. Multiple types that implementNetworkBehaviourcan be composed into a single behaviour. - The
StreamMuxertrait is implemented on structs that hold a connection to a remote and can subdivide this connection into multiple substreams. See themuxingmodule. - The
UpgradeInfo,InboundUpgradeandOutboundUpgradetraits define how to upgrade each individual substream to use a protocol. See theupgrademodule. - The
ProtocolsHandlertrait 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. See theprotocols_handlertrait.
High-level APIs vs low-level APIs
This crate provides two sets of APIs:
- The low-level APIs are contained within the
nodesmodule. See the documentation for more information. - The high-level APIs include the concepts of
Swarm,ProtocolsHandlerandNetworkBehaviour.
Re-exports
pub use multiaddr; |
pub use muxing::StreamMuxer; |
pub use protocols_handler::ProtocolsHandler; |
pub use protocols_handler::ProtocolsHandlerEvent; |
pub use identity::PublicKey; |
pub use transport::Transport; |
pub use upgrade::InboundUpgrade; |
pub use upgrade::OutboundUpgrade; |
pub use upgrade::UpgradeInfo; |
pub use upgrade::ProtocolName; |
Modules
| either | |
| identity | A node's network identity keys. |
| muxing | Muxing is the process of splitting a connection into multiple substreams. |
| nodes | Low-level networking primitives. |
| protocols_handler | Once a connection to a remote peer is established, a |
| swarm | High level manager of the network. |
| transport | Connection-oriented communication channels. |
| upgrade | Contains everything related to upgrading a connection or a substream to use a protocol. |
Structs
| Multiaddr | Representation of a Multiaddr. |
| Negotiated | A stream after it has been negotiated. |
| PeerId | Identifier of a peer of the network. |
Enums
| Endpoint | |
| UpgradeError | Error that can happen when upgrading a connection or substream to use a protocol. |
Functions
| address_translation | Perform IP address translation. |
Type Definitions
| Swarm | Contains the state of the network, plus the way it should behave. |