Crate libp2p_relay[][src]

Implementation of the libp2p circuit relay 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(&mut swarm, relay_addr).unwrap();

// Dial node (5678) via relay node (1234).
Swarm::dial_addr(&mut swarm, 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

Relay

Network behaviour allowing the local node to act as a source, a relay and a destination.

RelayConfig
RelayTransport

A Transport wrapping another Transport enabling relay capabilities.

RequestId

The ID of an outgoing / incoming, relay / destination request.

Enums

RelayError

Error that occurred during relay connection setup.

Functions

new_transport_and_behaviour

Create both a RelayTransport wrapping the provided Transport as well as a Relay NetworkBehaviour.