From be5b43cb871125e758cf09bd01fa535cee71fb45 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 29 Sep 2021 09:04:18 +0200 Subject: [PATCH] remove tools/async_io.rs nothing from here is used anymore, so remove it Signed-off-by: Dominik Csapak Signed-off-by: Thomas Lamprecht --- src/tools/async_io.rs | 83 ------------------------------------------- src/tools/mod.rs | 1 - 2 files changed, 84 deletions(-) delete mode 100644 src/tools/async_io.rs diff --git a/src/tools/async_io.rs b/src/tools/async_io.rs deleted file mode 100644 index 66d38094..00000000 --- a/src/tools/async_io.rs +++ /dev/null @@ -1,83 +0,0 @@ -//! AsyncRead/AsyncWrite utilities. - -use std::os::unix::io::{AsRawFd, RawFd}; -use std::pin::Pin; -use std::task::{Context, Poll}; - -use futures::stream::{Stream, TryStream}; -use futures::ready; -use tokio::io::{AsyncRead, AsyncWrite}; -use tokio::net::TcpListener; - - -/// Tokio's `Incoming` now is a reference type and hyper's `AddrIncoming` misses some standard -/// stuff like `AsRawFd`, so here's something implementing hyper's `Accept` from a `TcpListener` -pub struct StaticIncoming(TcpListener); - -impl From for StaticIncoming { - fn from(inner: TcpListener) -> Self { - Self(inner) - } -} - -impl AsRawFd for StaticIncoming { - fn as_raw_fd(&self) -> RawFd { - self.0.as_raw_fd() - } -} - -impl hyper::server::accept::Accept for StaticIncoming { - type Conn = tokio::net::TcpStream; - type Error = std::io::Error; - - fn poll_accept( - self: Pin<&mut Self>, - cx: &mut Context, - ) -> Poll>> { - let this = self.get_mut(); - loop { - match ready!(this.0.poll_accept(cx)) { - Ok((conn, _addr)) => return Poll::Ready(Some(Ok(conn))), - Err(err) => { - eprintln!("error accepting connection: {}", err); - continue; - } - } - } - } -} - -/// We also implement TryStream for this, as tokio doesn't do this anymore either and we want to be -/// able to map connections to then add eg. ssl to them. This support code makes the changes -/// required for hyper 0.13 a bit less annoying to read. -impl Stream for StaticIncoming { - type Item = std::io::Result<(tokio::net::TcpStream, std::net::SocketAddr)>; - - fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - match self.get_mut().0.poll_accept(cx) { - Poll::Pending => Poll::Pending, - Poll::Ready(result) => Poll::Ready(Some(result)), - } - } -} - -/// Implement hyper's `Accept` for any `TryStream` of sockets: -pub struct HyperAccept(pub T); - - -impl hyper::server::accept::Accept for HyperAccept -where - T: TryStream + Unpin, - I: AsyncRead + AsyncWrite, -{ - type Conn = I; - type Error = T::Error; - - fn poll_accept( - self: Pin<&mut Self>, - cx: &mut Context, - ) -> Poll>> { - let this = Pin::new(&mut self.get_mut().0); - this.try_poll_next(cx) - } -} diff --git a/src/tools/mod.rs b/src/tools/mod.rs index 5dc129f0..d8ed7275 100644 --- a/src/tools/mod.rs +++ b/src/tools/mod.rs @@ -13,7 +13,6 @@ use proxmox_http::{ }; pub mod apt; -pub mod async_io; pub mod config; pub mod disks;