pub trait Transport {
    type Output;
    type Error: Error + Send + Sync + 'static;
    type Listener: Stream<Item = Result<(Self::Inbound, NetworkAddress), Self::Error>> + Send + Unpin;
    type Inbound: Future<Output = Result<Self::Output, Self::Error>> + Send;
    type Outbound: Future<Output = Result<Self::Output, Self::Error>> + Send;
    // Required methods
    fn listen_on(
        &self,
        addr: NetworkAddress
    ) -> Result<(Self::Listener, NetworkAddress), Self::Error>
       where Self: Sized;
    fn dial(
        &self,
        peer_id: PeerId,
        addr: NetworkAddress
    ) -> Result<Self::Outbound, Self::Error>
       where Self: Sized;
}Expand description
A Transport is responsible for establishing connections with remote Peers.
Connections are established either by listening
or dialing on a Transport. A peer that
obtains a connection by listening is often referred to as the listener and the
peer that initiated the connection through dialing as the dialer.
Additional protocols can be layered on top of the connections established
by a Transport through utilizing the combinators in the TransportExt trait.
Required Associated Types§
sourcetype Output
 
type Output
The result of establishing a connection.
Generally this would include a socket-like streams which allows for sending and receiving of data through the connection.
sourcetype Error: Error + Send + Sync + 'static
 
type Error: Error + Send + Sync + 'static
The Error type of errors which can happen while establishing a connection.
sourcetype Listener: Stream<Item = Result<(Self::Inbound, NetworkAddress), Self::Error>> + Send + Unpin
 
type Listener: Stream<Item = Result<(Self::Inbound, NetworkAddress), Self::Error>> + Send + Unpin
sourcetype Inbound: Future<Output = Result<Self::Output, Self::Error>> + Send
 
type Inbound: Future<Output = Result<Self::Output, Self::Error>> + Send
A pending Output for an inbound connection,
obtained from the Listener stream.
After a connection has been accepted by the transport, it may need to go through
asynchronous post-processing (i.e. protocol upgrade negotiations). Such
post-processing should not block the Listener from producing the next
connection, hence further connection setup proceeds asynchronously.
Once a Inbound future resolves it yields the Output
of the connection setup process.
Required Methods§
sourcefn listen_on(
    &self,
    addr: NetworkAddress
) -> Result<(Self::Listener, NetworkAddress), Self::Error>where
    Self: Sized,
 
fn listen_on( &self, addr: NetworkAddress ) -> Result<(Self::Listener, NetworkAddress), Self::Error>where Self: Sized,
Listens on the given [NetworkAddress], returning a stream of incoming connections.
The returned [NetworkAddress] is the actual listening address, this is done to take into
account OS-assigned port numbers (e.g. listening on port 0).