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)
}
}