Struct libp2p_tcp::Transport
source · pub struct Transport<T>where
T: Provider + Send,{ /* private fields */ }
Expand description
An abstract libp2p_core::Transport
implementation.
You shouldn’t need to use this type directly. Use one of the following instead:
tokio::Transport
- [
async_io::Transport
]
Implementations§
source§impl<T> Transport<T>where
T: Provider + Send,
impl<T> Transport<T>where T: Provider + Send,
sourcepub fn new(config: Config) -> Self
pub fn new(config: Config) -> Self
Create a new instance of Transport
.
If you don’t want to specify a Config
, use Transport::default
.
It is best to call this function through one of the type-aliases of this type:
tokio::Transport::new
- [
async_io::Transport::new
]
Trait Implementations§
source§impl<T> Transport for Transport<T>where
T: Provider + Send + 'static,
T::Listener: Unpin,
T::Stream: Unpin,
impl<T> Transport for Transport<T>where T: Provider + Send + 'static, T::Listener: Unpin, T::Stream: Unpin,
source§fn address_translation(
&self,
listen: &Multiaddr,
observed: &Multiaddr
) -> Option<Multiaddr>
fn address_translation( &self, listen: &Multiaddr, observed: &Multiaddr ) -> Option<Multiaddr>
When port reuse is disabled and hence ephemeral local ports are
used for outgoing connections, the returned address is the
observed
address with the port replaced by the port of the
listen
address.
If port reuse is enabled, Some(observed)
is returned, as there
is a chance that the observed
address and port are reachable
for other peers if there is a NAT in the way that does endpoint-
independent filtering. Furthermore, even if that is not the case
and TCP hole punching techniques must be used for NAT traversal,
the observed
address is still the one that a remote should connect
to for the purpose of the hole punching procedure, as it represents
the mapped IP and port of the NAT device in front of the local
node.
None
is returned if one of the given addresses is not a TCP/IP
address.
source§fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<TransportEvent<Self::ListenerUpgrade, Self::Error>>
fn poll( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<TransportEvent<Self::ListenerUpgrade, Self::Error>>
Poll all listeners.
§type Output = <T as Provider>::Stream
type Output = <T as Provider>::Stream
§type Dial = Pin<Box<dyn Future<Output = Result<<Transport<T> as Transport>::Output, <Transport<T> as Transport>::Error>> + Send, Global>>
type Dial = Pin<Box<dyn Future<Output = Result<<Transport<T> as Transport>::Output, <Transport<T> as Transport>::Error>> + Send, Global>>
§type ListenerUpgrade = Ready<Result<<Transport<T> as Transport>::Output, <Transport<T> as Transport>::Error>>
type ListenerUpgrade = Ready<Result<<Transport<T> as Transport>::Output, <Transport<T> as Transport>::Error>>
source§fn listen_on(
&mut self,
addr: Multiaddr
) -> Result<ListenerId, TransportError<Self::Error>>
fn listen_on( &mut self, addr: Multiaddr ) -> Result<ListenerId, TransportError<Self::Error>>
Multiaddr
for inbound connections.source§fn remove_listener(&mut self, id: ListenerId) -> bool
fn remove_listener(&mut self, id: ListenerId) -> bool
source§fn dial_as_listener(
&mut self,
addr: Multiaddr
) -> Result<Self::Dial, TransportError<Self::Error>>
fn dial_as_listener( &mut self, addr: Multiaddr ) -> Result<Self::Dial, TransportError<Self::Error>>
Transport::dial
but has the local node act as a listener on the outgoing connection. Read more