feat(transport): add from_listener for TcpIncoming (#1093)

This commit is contained in:
walter
2022-10-03 19:08:43 +08:00
committed by GitHub
parent 3663faf32d
commit 0b03b30ccc
+16 -1
View File
@@ -12,7 +12,10 @@ use std::{
task::{Context, Poll},
time::Duration,
};
use tokio::io::{AsyncRead, AsyncWrite};
use tokio::{
io::{AsyncRead, AsyncWrite},
net::TcpListener,
};
#[cfg(not(feature = "tls"))]
pub(crate) fn tcp_incoming<IO, IE, L>(
@@ -172,6 +175,18 @@ impl TcpIncoming {
inner.set_keepalive(keepalive);
Ok(TcpIncoming { inner })
}
/// Creates a new `TcpIncoming` from an existing `tokio::net::TcpListener`.
pub fn from_listener(
listener: TcpListener,
nodelay: bool,
keepalive: Option<Duration>,
) -> Result<Self, crate::Error> {
let mut inner = AddrIncoming::from_listener(listener)?;
inner.set_nodelay(nodelay);
inner.set_keepalive(keepalive);
Ok(TcpIncoming { inner })
}
}
impl Stream for TcpIncoming {