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:
-
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();
-
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
impl Transport for Transport
§type Output = Connection
type Output = Connection
The result of a connection setup process, including protocol upgrades. Read more
§type ListenerUpgrade = Ready<Result<<Transport as Transport>::Output, <Transport as Transport>::Error>>
type ListenerUpgrade = Ready<Result<<Transport as Transport>::Output, <Transport as Transport>::Error>>
source§fn listen_on(
&mut self,
listener_id: ListenerId,
addr: Multiaddr
) -> Result<(), TransportError<<Transport as Transport>::Error>>
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
.source§fn remove_listener(&mut self, id: ListenerId) -> bool
fn remove_listener(&mut self, id: ListenerId) -> bool
Remove a listener. Read more
source§fn dial(
&mut self,
addr: Multiaddr
) -> Result<<Transport as Transport>::Dial, TransportError<<Transport as Transport>::Error>>
fn dial( &mut self, addr: Multiaddr ) -> Result<<Transport as Transport>::Dial, TransportError<<Transport as Transport>::Error>>
source§fn dial_as_listener(
&mut self,
addr: Multiaddr
) -> Result<<Transport as Transport>::Dial, TransportError<<Transport as Transport>::Error>>
fn dial_as_listener( &mut self, addr: Multiaddr ) -> Result<<Transport as Transport>::Dial, TransportError<<Transport as Transport>::Error>>
As
Transport::dial
but has the local node act as a listener on the outgoing connection. Read moresource§fn address_translation(
&self,
_server: &Multiaddr,
_observed: &Multiaddr
) -> Option<Multiaddr>
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 moresource§fn poll(
self: Pin<&mut Transport>,
cx: &mut Context<'_>
) -> Poll<TransportEvent<<Transport as Transport>::ListenerUpgrade, <Transport as Transport>::Error>>
fn poll( self: Pin<&mut Transport>, cx: &mut Context<'_> ) -> Poll<TransportEvent<<Transport as Transport>::ListenerUpgrade, <Transport as Transport>::Error>>
Poll for
TransportEvent
s. Read moresource§fn map<F, O>(self, f: F) -> Map<Self, F>
fn map<F, O>(self, f: F) -> Map<Self, F>
Applies a function on the connections created by the transport.
source§fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
Applies a function on the errors generated by the futures of the transport.
source§fn or_transport<U>(self, other: U) -> OrTransport<Self, U>
fn or_transport<U>(self, other: U) -> OrTransport<Self, U>
Adds a fallback transport that is used when encountering errors
while establishing inbound or outbound connections. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for Transport
impl Send for Transport
impl !Sync for Transport
impl Unpin for Transport
impl !UnwindSafe for Transport
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
source§impl<TTransport> TransportExt for TTransportwhere
TTransport: Transport,
impl<TTransport> TransportExt for TTransportwhere
TTransport: Transport,
source§fn with_bandwidth_logging<S>(
self
) -> (Boxed<(PeerId, StreamMuxerBox)>, Arc<BandwidthSinks>)
fn with_bandwidth_logging<S>( self ) -> (Boxed<(PeerId, StreamMuxerBox)>, Arc<BandwidthSinks>)
👎Deprecated: Use
libp2p::SwarmBuilder::with_bandwidth_metrics
or libp2p_metrics::BandwidthTransport
instead.Adds a layer on the
Transport
that logs all trafic that passes through the streams
created by it. Read more