Struct libp2p_combined_transport::CombinedTransport [−][src]
pub struct CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Error: Send + 'static,
TBase::Output: 'static, { /* fields omitted */ }
Expand description
Transport combining two transports. One of which is the base transport (like TCP), and another
one is a higher-level transport (like WebSocket). Similar to [OrTransport
], this tries to
dial first with the outer connection, and if that fails, with the base one. The main difference
is that incoming connections can be accepted on either one of them. For this to work, a
switch must be provided when handling incoming connections. For TCP, this can be achieved with
the peek
method on the underlying [TcpStream
].
[ListenerEvent
]s from the base transport are cloned and routed to the outer transport via the
ProxyTransport
, with the exception of upgrades.
For a usage example, have a loot at the TCP-Websocket example.
Implementations
impl<TBase, TOuter> CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Error: Send + 'static,
TBase::Output: 'static,
impl<TBase, TOuter> CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Error: Send + 'static,
TBase::Output: 'static,
Construct a new combined transport, given a base transport, a function to construct the outer transport given the base transport, a function to try the upgrade to the outer transport given incoming base connections, and a function to map base addresses to outer addresses (if necessary).
Trait Implementations
impl<TBase, TOuter> Clone for CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Error: Send + 'static,
TBase::Output: 'static,
impl<TBase, TOuter> Clone for CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Error: Send + 'static,
TBase::Output: 'static,
impl<TBase, TOuter> Transport for CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Listener: Send + 'static,
TBase::ListenerUpgrade: Send + 'static,
TBase::Error: Send + 'static,
TBase::Output: Send + 'static,
TBase::Dial: Send + 'static,
TOuter: Transport,
TOuter::Listener: Send + 'static,
TOuter::ListenerUpgrade: Send + 'static,
TOuter::Error: 'static,
TOuter::Output: 'static,
TOuter::Dial: Send + 'static,
impl<TBase, TOuter> Transport for CombinedTransport<TBase, TOuter> where
TBase: Transport + Clone,
TBase::Listener: Send + 'static,
TBase::ListenerUpgrade: Send + 'static,
TBase::Error: Send + 'static,
TBase::Output: Send + 'static,
TBase::Dial: Send + 'static,
TOuter: Transport,
TOuter::Listener: Send + 'static,
TOuter::ListenerUpgrade: Send + 'static,
TOuter::Error: 'static,
TOuter::Output: 'static,
TOuter::Dial: Send + 'static,
type Output = EitherOutput<TBase::Output, TOuter::Output>
type Output = EitherOutput<TBase::Output, TOuter::Output>
The result of a connection setup process, including protocol upgrades. Read more
type Error = CombinedError<TBase::Error, TOuter::Error>
type Error = CombinedError<TBase::Error, TOuter::Error>
An error that occurred during connection setup.
type ListenerUpgrade = BoxFuture<'static, Result<Self::Output, Self::Error>>
type ListenerUpgrade = BoxFuture<'static, Result<Self::Output, Self::Error>>
Listens on the given [Multiaddr
], producing a stream of pending, inbound connections
and addresses this transport is listening on (cf. [ListenerEvent
]). Read more
Dials the given [Multiaddr
], returning a future for a pending outbound connection. Read more
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 more
Boxes the transport, including custom transport errors.
Applies a function on the connections created by the transport.
Applies a function on the errors generated by the futures of the transport.
fn or_transport<U>(self, other: U) -> OrTransport<Self, U> where
U: Transport,
<U as Transport>::Error: 'static,
fn or_transport<U>(self, other: U) -> OrTransport<Self, U> where
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
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::Error: 'static,
fn upgrade(self, version: Version) -> Builder<Self> where
Self::Error: 'static,
Begins a series of protocol upgrades via an
upgrade::Builder
. Read more
Auto Trait Implementations
impl<TBase, TOuter> !RefUnwindSafe for CombinedTransport<TBase, TOuter>
impl<TBase, TOuter> Send for CombinedTransport<TBase, TOuter> where
TBase: Send,
TOuter: Send,
impl<TBase, TOuter> Sync for CombinedTransport<TBase, TOuter> where
TBase: Sync,
TOuter: Sync,
impl<TBase, TOuter> Unpin for CombinedTransport<TBase, TOuter> where
TBase: Unpin,
TOuter: Unpin,
impl<TBase, TOuter> !UnwindSafe for CombinedTransport<TBase, TOuter>
Blanket Implementations
Mutably borrows from an owned value. Read more
Adds a layer on the Transport
that logs all trafic that passes through the sockets
created by it. Read more