Struct libp2p_relay::v1::RelayTransport
source · [−]pub struct RelayTransport<T: Clone> { /* private fields */ }
Expand description
A Transport
wrapping another Transport
enabling relay capabilities.
Allows the local node to:
-
Use inner wrapped transport as before.
relay_transport.dial(Multiaddr::empty().with(Protocol::Memory(42)));
-
Establish relayed connections by dialing
/p2p-circuit
addresses.let dst_addr_via_relay = Multiaddr::empty() .with(Protocol::Memory(40)) // Relay address. .with(Protocol::P2p(PeerId::random().into())) // Relay peer id. .with(Protocol::P2pCircuit) // Signal to connect via relay and not directly. .with(Protocol::Memory(42)) // Destination address. .with(Protocol::P2p(PeerId::random().into())); // Destination peer id. relay_transport.dial(dst_addr_via_relay).unwrap();
-
Listen for incoming relayed connections via specific relay.
let relay_addr = Multiaddr::empty() .with(Protocol::Memory(40)) // Relay address. .with(Protocol::P2p(PeerId::random().into())) // Relay peer id. .with(Protocol::P2pCircuit); // Signal to listen via remote relay node. relay_transport.listen_on(relay_addr).unwrap();
-
Listen for incoming relayed connections via any relay.
Note: Without this listener, incoming relayed connections from relays, that the local node is not explicitly listening via, are dropped.
let addr = Multiaddr::empty() .with(Protocol::P2pCircuit); // Signal to listen via any relay. relay_transport.listen_on(addr).unwrap();
Trait Implementations
type Output = EitherOutput<<T as Transport>::Output, Connection>
type Output = EitherOutput<<T as Transport>::Output, Connection>
The result of a connection setup process, including protocol upgrades. Read more
type Error = EitherError<<T as Transport>::Error, RelayError>
type Error = EitherError<<T as Transport>::Error, RelayError>
An error that occurred during connection setup.
type Listener = RelayListener<T>
type Listener = RelayListener<T>
type ListenerUpgrade = RelayedListenerUpgrade<T>
type ListenerUpgrade = RelayedListenerUpgrade<T>
type Dial = EitherFuture<<T as Transport>::Dial, BoxFuture<'static, Result<Connection, RelayError>>>
type Dial = EitherFuture<<T as Transport>::Dial, BoxFuture<'static, Result<Connection, RelayError>>>
Listens on the given [Multiaddr
], producing a stream of pending, inbound connections
and addresses this transport is listening on (cf. ListenerEvent
). Read more
Dials the given [Multiaddr
], returning a future for a pending outbound connection. Read more
fn dial_as_listener(
self,
addr: Multiaddr
) -> Result<Self::Dial, TransportError<Self::Error>>
fn dial_as_listener(
self,
addr: Multiaddr
) -> Result<Self::Dial, TransportError<Self::Error>>
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
Boxes the transport, including custom transport errors.
Applies a function on the connections created by the transport.
Applies a function on the errors generated by the futures of the transport.
fn or_transport<U>(self, other: U) -> OrTransport<Self, U> where
U: Transport,
<U as Transport>::Error: 'static,
fn or_transport<U>(self, other: U) -> OrTransport<Self, U> where
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
Applies a function producing an asynchronous result to every connection created by this transport. Read more
Auto Trait Implementations
impl<T> !RefUnwindSafe for RelayTransport<T>
impl<T> Send for RelayTransport<T> where
T: Send,
impl<T> Sync for RelayTransport<T> where
T: Sync,
impl<T> Unpin for RelayTransport<T> where
T: Unpin,
impl<T> !UnwindSafe for RelayTransport<T>
Blanket Implementations
Mutably borrows from an owned value. Read more