pub struct ClientTransport { /* private fields */ }
Expand description

A Transport enabling client relay capabilities.

Note: The transport only handles listening and dialing on relayed [Multiaddr], and depends on an other transport to do the actual transmission of data. They should be combined through the OrTransport.

Allows the local node to:

  1. Establish relayed connections by dialing /p2p-circuit addresses.

    let actual_transport = MemoryTransport::default();
    let (relay_transport, behaviour) = client::Client::new_transport_and_behaviour(
        PeerId::random(),
    );
    let mut transport = OrTransport::new(relay_transport, actual_transport);
    let dst_addr_via_relay = Multiaddr::empty()
        .with(Protocol::Memory(40)) // Relay address.
        .with(Protocol::P2p(relay_id.into())) // Relay peer id.
        .with(Protocol::P2pCircuit) // Signal to connect via relay and not directly.
        .with(Protocol::P2p(destination_id.into())); // Destination peer id.
    transport.dial(dst_addr_via_relay).unwrap();
  2. Listen for incoming relayed connections via specific relay.

    let actual_transport = MemoryTransport::default();
    let (relay_transport, behaviour) = client::Client::new_transport_and_behaviour(
       local_peer_id,
    );
    let mut transport = OrTransport::new(relay_transport, actual_transport);
    let relay_addr = Multiaddr::empty()
        .with(Protocol::Memory(40)) // Relay address.
        .with(Protocol::P2p(relay_id.into())) // Relay peer id.
        .with(Protocol::P2pCircuit); // Signal to listen via remote relay node.
    transport.listen_on(relay_addr).unwrap();

Trait Implementations§

The result of a connection setup process, including protocol upgrades. Read more
An error that occurred during connection setup.
A pending Output for an inbound connection, obtained from the Transport stream. Read more
A pending Output for an outbound connection, obtained from dialing. Read more
Listens on the given [Multiaddr] for inbound connections.
Remove a listener. Read more
Dials the given [Multiaddr], returning a future for a pending outbound connection. Read more
As Transport::dial but has the local node act as a listener on the outgoing connection. Read more
Performs a transport-specific mapping of an address observed by a remote onto a local listen address to yield an address for the local node that may be reachable for other peers. Read more
Applies a function on the connections created by the transport.
Applies a function on the errors generated by the futures of the transport.
Adds a fallback transport that is used when encountering errors while establishing inbound or outbound connections. Read more
Applies a function producing an asynchronous result to every connection created by this transport. Read more
Begins a series of protocol upgrades via an upgrade::Builder. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.