Struct libp2p_tcp::GenTcpTransport
source · pub struct GenTcpTransport<T>where
T: Provider + Send,{ /* private fields */ }
Implementations§
source§impl<T> GenTcpTransport<T>where
T: Provider + Send,
impl<T> GenTcpTransport<T>where
T: Provider + Send,
pub fn new(config: GenTcpConfig) -> Self
Trait Implementations§
source§impl<T> Default for GenTcpTransport<T>where
T: Provider + Send,
impl<T> Default for GenTcpTransport<T>where
T: Provider + Send,
source§impl<T> Transport for GenTcpTransport<T>where
T: Provider + Send + 'static,
T::Listener: Unpin,
T::IfWatcher: Unpin,
T::Stream: Unpin,
impl<T> Transport for GenTcpTransport<T>where
T: Provider + Send + 'static,
T::Listener: Unpin,
T::IfWatcher: 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<<GenTcpTransport<T> as Transport>::Output, <GenTcpTransport<T> as Transport>::Error>> + Send + 'static, Global>>
type Dial = Pin<Box<dyn Future<Output = Result<<GenTcpTransport<T> as Transport>::Output, <GenTcpTransport<T> as Transport>::Error>> + Send + 'static, Global>>
§type ListenerUpgrade = Ready<Result<<GenTcpTransport<T> as Transport>::Output, <GenTcpTransport<T> as Transport>::Error>>
type ListenerUpgrade = Ready<Result<<GenTcpTransport<T> as Transport>::Output, <GenTcpTransport<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