pub struct LazyConfigAcceptor<IO> { /* private fields */ }
Implementations§
Source§impl<IO> LazyConfigAcceptor<IO>
impl<IO> LazyConfigAcceptor<IO>
pub fn new(acceptor: Acceptor, io: IO) -> Self
Sourcepub fn take_io(&mut self) -> Option<IO>
pub fn take_io(&mut self) -> Option<IO>
Takes back the client connection. Will return None
if called more than once or if the
connection has been accepted.
§Example
use tokio::io::AsyncWriteExt;
let listener = tokio::net::TcpListener::bind("127.0.0.1:4443").await.unwrap();
let (stream, _) = listener.accept().await.unwrap();
let acceptor = tokio_rustls::LazyConfigAcceptor::new(rustls::server::Acceptor::default(), stream);
tokio::pin!(acceptor);
match acceptor.as_mut().await {
Ok(start) => {
let clientHello = start.client_hello();
let config = choose_server_config(clientHello);
let stream = start.into_stream(config).await.unwrap();
// Proceed with handling the ServerConnection...
}
Err(err) => {
if let Some(mut stream) = acceptor.take_io() {
stream
.write_all(
format!("HTTP/1.1 400 Invalid Input\r\n\r\n\r\n{:?}\n", err)
.as_bytes()
)
.await
.unwrap();
}
}
}
Trait Implementations§
Source§impl<IO> Future for LazyConfigAcceptor<IO>
impl<IO> Future for LazyConfigAcceptor<IO>
Auto Trait Implementations§
impl<IO> Freeze for LazyConfigAcceptor<IO>where
IO: Freeze,
impl<IO> !RefUnwindSafe for LazyConfigAcceptor<IO>
impl<IO> Send for LazyConfigAcceptor<IO>where
IO: Send,
impl<IO> Sync for LazyConfigAcceptor<IO>where
IO: Sync,
impl<IO> Unpin for LazyConfigAcceptor<IO>where
IO: Unpin,
impl<IO> !UnwindSafe for LazyConfigAcceptor<IO>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<F> IntoFuture for Fwhere
F: Future,
impl<F> IntoFuture for Fwhere
F: Future,
Source§type IntoFuture = F
type IntoFuture = F
Which kind of future are we turning this into?
Source§fn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
Creates a future from a value. Read more
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.