Trait Acceptor

Source
pub trait Acceptor<Input>:
    Clone
    + Send
    + Sync
    + 'static
where Input: Transport,
{ type Output: Transport; type Error: Debug + Send + Sync; // Required method fn accept<'life0, 'async_trait>( &'life0 self, input: Input, ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; }
Expand description

This trait provides the common interface for server-side tls acceptors, abstracting over various implementations

The only implementation provided by this crate is (), which is a noop acceptor, and passes through the Input type.

Implementing this trait looks like:

use trillium_server_common::{AsyncRead, AsyncWrite, async_trait, Transport};
#[async_trait]
impl<Input> Acceptor<Input> for my_tls_impl::Acceptor
where
    Input: Transport,
{
    type Output = my_tls_impl::TlsStream<Input>;
    type Error = my_tls_impl::Error;
    async fn accept(&self, input: Input) -> Result<Self::Output, Self::Error> {
        self.accept(input).await
    }
}

Required Associated Types§

Source

type Output: Transport

The stream type. For example, TlsStream<Input>

Source

type Error: Debug + Send + Sync

An error type that Acceptor::accept may return

Required Methods§

Source

fn accept<'life0, 'async_trait>( &'life0 self, input: Input, ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Transform an Input (AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static) into Self::Output

Async trait signature:

async fn accept(&self, input: Input) -> Result<Self::Output, Self::Error>;

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.

Implementations on Foreign Types§

Source§

impl<Input> Acceptor<Input> for ()
where Input: Transport,

Source§

type Output = Input

Source§

type Error = Infallible

Source§

fn accept<'life0, 'async_trait>( &'life0 self, input: Input, ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementors§