Struct libp2p::tcp::Transport

pub struct Transport<T>
where T: Provider + Send,
{ /* private fields */ }
Available on crate feature tcp only.
Expand description

An abstract libp2p_core::Transport implementation.

You shouldn’t need to use this type directly. Use one of the following instead:

Implementations§

§

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

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§

§

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

§

fn default() -> Transport<T>

Creates a Transport with reasonable defaults.

This transport will have port-reuse disabled.

§

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

§

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.

§

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
§

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

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

Remove a listener. Read more
§

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
§

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
§

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

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

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
§

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
§

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
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self, E>

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.

§

impl<T> Instrument for T

§

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

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

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
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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,

👎Deprecated: Use libp2p::SwarmBuilder::with_bandwidth_metrics or libp2p_metrics::BandwidthTransport instead.
Adds a layer on the Transport that logs all traffic 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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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