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:

Implementations§

source§

impl<T> Transport<T>
where T: Provider + Send,

source

pub fn new(config: Config) -> Transport<T>

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:

Trait Implementations§

source§

impl<T> Default for Transport<T>
where T: Provider + Send,

source§

fn default() -> Transport<T>

Creates a Transport with reasonable defaults.

This transport will have port-reuse disabled.

source§

impl<T> Transport for Transport<T>
where T: Provider + Send + 'static, <T as Provider>::Listener: Unpin, <T as Provider>::Stream: Unpin,

source§

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 Transport<T>>, cx: &mut Context<'_>, ) -> Poll<TransportEvent<<Transport<T> as Transport>::ListenerUpgrade, <Transport<T> as Transport>::Error>>

Poll all listeners.

§

type Output = <T as Provider>::Stream

The result of a connection setup process, including protocol upgrades. Read more
§

type Error = Error

An error that occurred during connection setup.
§

type Dial = Pin<Box<dyn Future<Output = Result<<Transport<T> as Transport>::Output, <Transport<T> as Transport>::Error>> + Send>>

A pending Output for an outbound connection, obtained from dialing.
§

type ListenerUpgrade = Ready<Result<<Transport<T> as Transport>::Output, <Transport<T> as Transport>::Error>>

A pending Output for an inbound connection, obtained from the Transport stream. Read more
source§

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

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

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

Remove a listener. Read more
source§

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

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

fn dial_as_listener( &mut self, addr: Multiaddr, ) -> Result<<Transport<T> as Transport>::Dial, TransportError<<Transport<T> as Transport>::Error>>

As Transport::dial but has the local node act as a listener on the outgoing connection. Read more
source§

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

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

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

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

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§

§

impl<T> !Freeze for Transport<T>

§

impl<T> !RefUnwindSafe for Transport<T>

§

impl<T> Send for Transport<T>

§

impl<T> Sync for Transport<T>
where <T as Provider>::Listener: Sync, <T as Provider>::IfWatcher: Sync, <T as Provider>::Stream: Sync,

§

impl<T> Unpin for Transport<T>

§

impl<T> !UnwindSafe for Transport<T>

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

source§

impl<T> Instrument for T

source§

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

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

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

impl<T> Same for T

§

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,

Adds a layer on the Transport that logs all trafic that passes through the streams created by it. Read more
source§

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

§

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

§

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

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

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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