Trait TlsConnector

Source
pub trait TlsConnector:
    Sized
    + Sync
    + Send
    + 'static {
    type Builder: TlsConnectorBuilder<Connector = Self>;
    type Underlying;
    type TlsStream: TlsStreamDyn;

    const IMPLEMENTED: bool;
    const SUPPORTS_ALPN: bool;
    const TYPE_DYN: &'static dyn TlsConnectorType = _;

    // Required methods
    fn underlying_mut(&mut self) -> &mut Self::Underlying;
    fn info() -> ImplInfo;
    fn builder() -> Result<Self::Builder>;
    fn connect_with_socket<'a, S>(
        &'a self,
        domain: &'a str,
        stream: S,
    ) -> BoxFuture<'a, Result<TlsStreamWithSocket<S>>> 
       where S: AsyncSocket;
    fn connect_impl_tls_stream<'a, S>(
        &'a self,
        domain: &'a str,
        stream: S,
    ) -> BoxFuture<'a, Result<Self::TlsStream>> 
       where S: AsyncSocket;

    // Provided methods
    fn into_dyn(self) -> TlsConnectorBox { ... }
    fn connect_default<S>(
        domain: &str,
        stream: S,
    ) -> BoxFuture<'_, Result<TlsStream>> 
       where S: AsyncSocket { ... }
    fn connect<'a, S>(
        &'a self,
        domain: &'a str,
        stream: S,
    ) -> BoxFuture<'a, Result<TlsStream>> 
       where S: AsyncSocket { ... }
}
Expand description

A builder for client-side TLS connections.

Required Associated Constants§

Source

const IMPLEMENTED: bool

Is it implemented? When false all operations return an error.

At the moment of writing, there are two crates which return false here:

  • tls-api-stub, dummy implementation is not meant to be instantiated
  • tls-api-security-framework, true only on macOS and iOS, false elsewhere
Source

const SUPPORTS_ALPN: bool

Whether this implementation supports ALPN negotiation.

Provided Associated Constants§

Source

const TYPE_DYN: &'static dyn TlsConnectorType = _

Dynamic (without type parameter) version of the connector.

This function returns a connector type, which can be used to constructor connectors.

Required Associated Types§

Source

type Builder: TlsConnectorBuilder<Connector = Self>

Type of the builder for this connector.

Source

type Underlying

Type of the underlying connector.

Source

type TlsStream: TlsStreamDyn

crate::TlsStream<tls_api::AsyncSocketBox>.

In the world of HKT this would be:

type TlsStream<S: TlsStreamDyn> : TlsStreamWithSocketDyn<S>;

Required Methods§

Source

fn underlying_mut(&mut self) -> &mut Self::Underlying

Get the underlying builder.

API intentionally exposes the underlying acceptor builder to allow fine tuning not possible in common API.

Source

fn info() -> ImplInfo

Implementation info.

Source

fn builder() -> Result<Self::Builder>

New builder for the acceptor.

Source

fn connect_with_socket<'a, S>( &'a self, domain: &'a str, stream: S, ) -> BoxFuture<'a, Result<TlsStreamWithSocket<S>>>
where S: AsyncSocket,

Connect.

Returned future is resolved when the TLS-negotiation completes, and the stream is ready to send and receive.

This function returns a stream which provides access to the underlying socket.

Practically, connect is usually needed.

Source

fn connect_impl_tls_stream<'a, S>( &'a self, domain: &'a str, stream: S, ) -> BoxFuture<'a, Result<Self::TlsStream>>
where S: AsyncSocket,

Connect.

Returned future is resolved when the TLS-negotiation completes, and the stream is ready to send and receive.

This version returns a stream of type of the underlying implementation, which may provide access to the implementation details.

Practically, connect is usually needed.

Provided Methods§

Source

fn into_dyn(self) -> TlsConnectorBox

Dynamic (without type parameter) version of the connector.

Source

fn connect_default<S>( domain: &str, stream: S, ) -> BoxFuture<'_, Result<TlsStream>>
where S: AsyncSocket,

Connect using default settings.

Shortcut.

Source

fn connect<'a, S>( &'a self, domain: &'a str, stream: S, ) -> BoxFuture<'a, Result<TlsStream>>
where S: AsyncSocket,

Connect.

Returned future is resolved when the TLS-negotiation completes, and the stream is ready to send and receive.

This is like the function you want to use.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§