async_tls_lite/
acceptor.rs1use std::io;
4use std::sync::Arc;
5
6use futures_util::io::{AsyncRead, AsyncWrite};
7use rustls::{ServerConfig, ServerSession};
8
9use crate::{handshake, TlsStream};
10
11#[derive(Clone)]
12pub struct TlsAcceptor {
13 inner: Arc<ServerConfig>,
14}
15
16impl From<Arc<ServerConfig>> for TlsAcceptor {
17 fn from(inner: Arc<ServerConfig>) -> TlsAcceptor {
18 TlsAcceptor { inner }
19 }
20}
21
22impl TlsAcceptor {
23 pub async fn accept<IO>(&self, stream: IO) -> io::Result<TlsStream<ServerSession, IO>>
24 where
25 IO: AsyncRead + AsyncWrite + Unpin,
26 {
27 let session = ServerSession::new(&self.inner);
28
29 handshake(session, stream).await
30 }
31}