Skip to main content

NetStreamProvider

Trait NetStreamProvider 

Source
pub trait NetStreamProvider<ADDR = SocketAddr>:
    Clone
    + Send
    + Sync
    + 'static {
    type Stream: AsyncRead + AsyncWrite + StreamOps + Send + Sync + Unpin + 'static;
    type Listener: NetStreamListener<ADDR, Stream = Self::Stream> + Send + Sync + Unpin + 'static;
    type ListenOptions: Clone + Default + Send + Sync + Unpin + 'static;

    // Required methods
    fn connect<'life0, 'life1, 'async_trait>(
        &'life0 self,
        addr: &'life1 ADDR,
    ) -> Pin<Box<dyn Future<Output = IoResult<Self::Stream>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn listen<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        addr: &'life1 ADDR,
        options: &'life2 Self::ListenOptions,
    ) -> Pin<Box<dyn Future<Output = IoResult<Self::Listener>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
}
Expand description

Trait for a runtime that can create and accept connections over network sockets.

(In Arti we use the AsyncRead and AsyncWrite traits from futures::io as more standard, even though the ones from Tokio can be a bit more efficient. Let’s hope that they converge in the future.)

Required Associated Types§

Source

type Stream: AsyncRead + AsyncWrite + StreamOps + Send + Sync + Unpin + 'static

The type for the connections returned by Self::connect().

Source

type Listener: NetStreamListener<ADDR, Stream = Self::Stream> + Send + Sync + Unpin + 'static

The type for the listeners returned by Self::listen().

Source

type ListenOptions: Clone + Default + Send + Sync + Unpin + 'static

The options that can be passed to Self::listen().

This includes both options that affect the listening, and options that will apply to any individual accepted connection streams.

It can include options set with setsockopt, as well as options that influence higher layers (eg, the runtime).

For established streams that are accepted from a listener, you can use StreamOps to perform additional operations or to configure additional options.

Required Methods§

Source

fn connect<'life0, 'life1, 'async_trait>( &'life0 self, addr: &'life1 ADDR, ) -> Pin<Box<dyn Future<Output = IoResult<Self::Stream>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Launch a connection connection to a given socket address.

Note that unlike std::net:TcpStream::connect, we do not accept any types other than a single ADDR. We do this because we must be absolutely sure not to perform unnecessary DNS lookups.

Source

fn listen<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, addr: &'life1 ADDR, options: &'life2 Self::ListenOptions, ) -> Pin<Box<dyn Future<Output = IoResult<Self::Listener>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Open a listener on a given socket address.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl NetStreamProvider for AsyncStd

Available on crate feature async-std and (crate features async-std or smol or tokio) and (crate features native-tls or rustls) only.
Source§

type Stream = TcpStream

Source§

type Listener = TcpListener

Source§

type ListenOptions = TcpListenOptions

Source§

fn connect<'life0, 'life1, 'async_trait>( &'life0 self, addr: &'life1 SocketAddr, ) -> Pin<Box<dyn Future<Output = IoResult<Self::Stream>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn listen<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, addr: &'life1 SocketAddr, options: &'life2 Self::ListenOptions, ) -> Pin<Box<dyn Future<Output = IoResult<Self::Listener>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

impl NetStreamProvider<SocketAddr> for AsyncStd

Available on crate feature async-std and (crate features async-std or smol or tokio) and (crate features native-tls or rustls) only.
Source§

type Stream = UnixStream

Source§

type Listener = UnixListener

Source§

type ListenOptions = UnixListenOptions

Source§

fn connect<'life0, 'life1, 'async_trait>( &'life0 self, addr: &'life1 SocketAddr, ) -> Pin<Box<dyn Future<Output = IoResult<Self::Stream>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn listen<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, addr: &'life1 SocketAddr, options: &'life2 Self::ListenOptions, ) -> Pin<Box<dyn Future<Output = IoResult<Self::Listener>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Implementors§

Source§

impl NetStreamProvider for AsyncStdNativeTlsRuntime

Available on crate feature async-std and (crate features native-tls or rustls) only.
Source§

impl NetStreamProvider for AsyncStdRustlsRuntime

Available on crate feature async-std and (crate features native-tls or rustls) only.
Source§

impl NetStreamProvider for PreferredRuntime

Source§

impl NetStreamProvider for SmolNativeTlsRuntime

Available on crate feature smol and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as NetStreamProvider>::Stream

Source§

type Listener = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as NetStreamProvider>::Listener

Source§

type ListenOptions = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as NetStreamProvider>::ListenOptions

Source§

impl NetStreamProvider for SmolRustlsRuntime

Available on crate feature smol and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as NetStreamProvider>::Stream

Source§

type Listener = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as NetStreamProvider>::Listener

Source§

type ListenOptions = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as NetStreamProvider>::ListenOptions

Source§

impl NetStreamProvider for TokioNativeTlsRuntime

Available on crate feature tokio and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as NetStreamProvider>::Stream

Source§

type Listener = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as NetStreamProvider>::Listener

Source§

type ListenOptions = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as NetStreamProvider>::ListenOptions

Source§

impl NetStreamProvider for TokioRustlsRuntime

Available on crate feature tokio and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, RustlsProvider, TokioRuntimeHandle> as NetStreamProvider>::Stream

Source§

type Listener = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, RustlsProvider, TokioRuntimeHandle> as NetStreamProvider>::Listener

Source§

type ListenOptions = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, RustlsProvider, TokioRuntimeHandle> as NetStreamProvider>::ListenOptions

Source§

impl NetStreamProvider<SocketAddr> for AsyncStdNativeTlsRuntime

Available on crate feature async-std and (crate features native-tls or rustls) only.
Source§

impl NetStreamProvider<SocketAddr> for AsyncStdRustlsRuntime

Available on crate feature async-std and (crate features native-tls or rustls) only.
Source§

impl NetStreamProvider<SocketAddr> for PreferredRuntime

Source§

impl NetStreamProvider<SocketAddr> for SmolNativeTlsRuntime

Available on crate feature smol and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as NetStreamProvider<SocketAddr>>::Stream

Source§

type Listener = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as NetStreamProvider<SocketAddr>>::Listener

Source§

type ListenOptions = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, NativeTlsProvider, SmolRuntime> as NetStreamProvider<SocketAddr>>::ListenOptions

Source§

impl NetStreamProvider<SocketAddr> for SmolRustlsRuntime

Available on crate feature smol and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as NetStreamProvider<SocketAddr>>::Stream

Source§

type Listener = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as NetStreamProvider<SocketAddr>>::Listener

Source§

type ListenOptions = <CompoundRuntime<SmolRuntime, SmolRuntime, RealCoarseTimeProvider, SmolRuntime, SmolRuntime, RustlsProvider, SmolRuntime> as NetStreamProvider<SocketAddr>>::ListenOptions

Source§

impl NetStreamProvider<SocketAddr> for TokioNativeTlsRuntime

Available on crate feature tokio and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as NetStreamProvider<SocketAddr>>::Stream

Source§

type Listener = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as NetStreamProvider<SocketAddr>>::Listener

Source§

type ListenOptions = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as NetStreamProvider<SocketAddr>>::ListenOptions

Source§

impl NetStreamProvider<SocketAddr> for TokioRustlsRuntime

Available on crate feature tokio and (crate features native-tls or rustls) only.
Source§

type Stream = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, RustlsProvider, TokioRuntimeHandle> as NetStreamProvider<SocketAddr>>::Stream

Source§

type Listener = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, RustlsProvider, TokioRuntimeHandle> as NetStreamProvider<SocketAddr>>::Listener

Source§

type ListenOptions = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, RustlsProvider, TokioRuntimeHandle> as NetStreamProvider<SocketAddr>>::ListenOptions

Source§

impl<T> NetStreamProvider<SocketAddr> for T

Source§

impl<TaskR, SleepR, CoarseTimeR, TcpR, UnixR, TlsR, UdpR> NetStreamProvider for CompoundRuntime<TaskR, SleepR, CoarseTimeR, TcpR, UnixR, TlsR, UdpR>
where TcpR: NetStreamProvider<SocketAddr> + Send + Sync + 'static, TaskR: Send + Sync + 'static, SleepR: Send + Sync + 'static, CoarseTimeR: Send + Sync + 'static, UnixR: Clone + Send + Sync + 'static, TlsR: Send + Sync + 'static, UdpR: Send + Sync + 'static,

Source§

impl<TaskR, SleepR, CoarseTimeR, TcpR, UnixR, TlsR, UdpR> NetStreamProvider<SocketAddr> for CompoundRuntime<TaskR, SleepR, CoarseTimeR, TcpR, UnixR, TlsR, UdpR>
where UnixR: NetStreamProvider<SocketAddr> + Clone + Send + Sync + 'static, TaskR: Send + Sync + 'static, SleepR: Send + Sync + 'static, CoarseTimeR: Send + Sync + 'static, TcpR: Send + Sync + 'static, TlsR: Send + Sync + 'static, UdpR: Send + Sync + 'static,