dope-tls 0.1.1

TCP TLS streams for dope runtime, shin-backed
Documentation

use dope_futures::{AsyncRead, AsyncWrite};

use crate::state::{TlsError, TlsState};
use crate::future::stream::TlsStream;

#[derive(Clone)]
pub struct TlsAcceptor {
    config: shin::server::Config,
}

impl TlsAcceptor {
    pub fn new(config: shin::server::Config) -> Self {
        Self { config }
    }

    pub async fn accept<IO>(&self, io: IO) -> Result<TlsStream<IO>, TlsError>
    where
        IO: AsyncRead + AsyncWrite,
    {
        let state = TlsState::new_server(self.config.clone());
        let mut stream = TlsStream::new(io, state);
        stream.handshake().await?;
        Ok(stream)
    }
}