use crate::{
async_io::{
handshake::handshake,
runtime::{AsyncRead, AsyncWrite},
TlsStream,
},
sync_io, Error,
};
use std::{fmt, marker::Unpin};
#[derive(Clone)]
pub(crate) struct TlsConnector(sync_io::TlsConnector);
impl TlsConnector {
pub(crate) async fn connect<S>(&self, domain: &str, stream: S) -> Result<TlsStream<S>, Error>
where
S: AsyncRead + AsyncWrite + Unpin,
{
handshake(move |s| self.0.connect(domain, s), stream).await
}
}
impl fmt::Debug for TlsConnector {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("TlsConnector").finish()
}
}
impl From<sync_io::TlsConnector> for TlsConnector {
fn from(inner: sync_io::TlsConnector) -> TlsConnector {
TlsConnector(inner)
}
}