Module libp2p_relay::v1
source · [−]Expand description
Implementation of the libp2p circuit relay v1 specification.
Example
let (relay_transport, relay_behaviour) = new_transport_and_behaviour(
RelayConfig::default(),
MemoryTransport::default(),
);
let transport = relay_transport
.upgrade(upgrade::Version::V1)
.authenticate(plaintext)
.multiplex(YamuxConfig::default())
.boxed();
let mut swarm = Swarm::new(transport, relay_behaviour, local_peer_id);
let relay_addr = Multiaddr::from_str("/memory/1234").unwrap()
.with(Protocol::P2p(PeerId::random().into()))
.with(Protocol::P2pCircuit);
let dst_addr = relay_addr.clone().with(Protocol::Memory(5678));
// Listen for incoming connections via relay node (1234).
swarm.listen_on(relay_addr).unwrap();
// Dial node (5678) via relay node (1234).
swarm.dial(dst_addr).unwrap();
Terminology
Entities
-
Source: The node initiating a connection via a relay to a destination.
-
Relay: The node being asked by a source to relay to a destination.
-
Destination: The node contacted by the source via the relay.
Messages
-
Outgoing relay request: The request sent by a source to a relay.
-
Incoming relay request: The request received by a relay from a source.
-
Outgoing destination request: The request sent by a relay to a destination.
-
Incoming destination request: The request received by a destination from a relay.
Structs
A NegotiatedSubstream
acting as a relayed Connection
.
Network behaviour allowing the local node to act as a source, a relay and a destination.
The ID of an outgoing / incoming, relay / destination request.
Enums
Error that occurred during relay connection setup.
Functions
Create both a RelayTransport
wrapping the provided Transport
as well as a Relay
NetworkBehaviour
.