pub struct Transport { /* 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) = relay::client::new(
        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) = relay::client::new(
       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(ListenerId::next(), relay_addr).unwrap();

Trait Implementations§

source§

impl Transport for Transport

§

type Output = Connection

The result of a connection setup process, including protocol upgrades. Read more
§

type Error = Error

An error that occurred during connection setup.
§

type ListenerUpgrade = Ready<Result<<Transport as Transport>::Output, <Transport as Transport>::Error>>

A pending Output for an inbound connection, obtained from the Transport stream. Read more
§

type Dial = Pin<Box<dyn Future<Output = Result<Connection, Error>> + Send>>

A pending Output for an outbound connection, obtained from dialing.
source§

fn listen_on( &mut self, listener_id: ListenerId, addr: Multiaddr ) -> Result<(), TransportError<Self::Error>>

Listens on the given Multiaddr for inbound connections with a provided ListenerId.
source§

fn remove_listener(&mut self, id: ListenerId) -> bool

Remove a listener. Read more
source§

fn dial( &mut self, addr: Multiaddr ) -> Result<Self::Dial, TransportError<Self::Error>>

Dials the given Multiaddr, returning a future for a pending outbound connection. Read more
source§

fn dial_as_listener( &mut self, addr: Multiaddr ) -> Result<Self::Dial, TransportError<Self::Error>>
where Self: Sized,

As Transport::dial but has the local node act as a listener on the outgoing connection. Read more
source§

fn address_translation( &self, _server: &Multiaddr, _observed: &Multiaddr ) -> Option<Multiaddr>

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
source§

fn poll( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<TransportEvent<Self::ListenerUpgrade, Self::Error>>
where Self: Sized,

source§

fn boxed(self) -> Boxed<Self::Output>
where Self: Sized + Send + Unpin + 'static, Self::Dial: Send + 'static, Self::ListenerUpgrade: Send + 'static, Self::Error: Send + Sync,

Boxes the transport, including custom transport errors.
source§

fn map<F, O>(self, f: F) -> Map<Self, F>
where Self: Sized, F: FnOnce(Self::Output, ConnectedPoint) -> O,

Applies a function on the connections created by the transport.
source§

fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
where Self: Sized, F: FnOnce(Self::Error) -> E,

Applies a function on the errors generated by the futures of the transport.
source§

fn or_transport<U>(self, other: U) -> OrTransport<Self, U>
where Self: Sized, U: Transport, <U as Transport>::Error: 'static,

Adds a fallback transport that is used when encountering errors while establishing inbound or outbound connections. Read more
source§

fn and_then<C, F, O>(self, f: C) -> AndThen<Self, C>
where Self: Sized, C: FnOnce(Self::Output, ConnectedPoint) -> F, F: TryFuture<Ok = O>, <F as TryFuture>::Error: Error + 'static,

Applies a function producing an asynchronous result to every connection created by this transport. Read more
source§

fn upgrade(self, version: Version) -> Builder<Self>
where Self: Sized, Self::Error: 'static,

Begins a series of protocol upgrades via an upgrade::Builder.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more