libp2p::relay::client

Struct Transport

pub struct Transport { /* private fields */ }
Available on crate feature relay only.
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, DialOpts {
         port_use: PortUse::Reuse,
         role: Endpoint::Dialer,
    }).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§

§

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

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

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

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

Remove a listener. Read more
§

fn dial( &mut self, addr: Multiaddr, dial_opts: DialOpts, ) -> Result<<Transport as Transport>::Dial, TransportError<<Transport as Transport>::Error>>

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

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

§

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

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

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

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
§

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
§

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
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<TTransport> TransportExt for TTransport
where TTransport: Transport,

Source§

fn with_bandwidth_logging<S>( self, ) -> (Boxed<(PeerId, StreamMuxerBox)>, Arc<BandwidthSinks>)
where Self: Sized + Send + Unpin + 'static, Self::Dial: Send + 'static, Self::ListenerUpgrade: Send + 'static, Self::Error: Send + Sync, Self::Output: Into<(PeerId, S)>, S: StreamMuxer + Send + 'static, S::Substream: Send + 'static, S::Error: Send + Sync + 'static,

👎Deprecated: Use libp2p::SwarmBuilder::with_bandwidth_metrics or libp2p_metrics::BandwidthTransport instead.
Adds a layer on the Transport that logs all traffic that passes through the streams created by it. Read more
Source§

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

Source§

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>,

Source§

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

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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