diff options
Diffstat (limited to 'tokio/src/net/unix/incoming.rs')
-rw-r--r-- | tokio/src/net/unix/incoming.rs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/tokio/src/net/unix/incoming.rs b/tokio/src/net/unix/incoming.rs index a66f21da..dbe964a8 100644 --- a/tokio/src/net/unix/incoming.rs +++ b/tokio/src/net/unix/incoming.rs @@ -1,7 +1,5 @@ -use super::{UnixListener, UnixStream}; +use crate::net::unix::{UnixListener, UnixStream}; -use futures_core::ready; -use futures_core::stream::Stream; use std::io; use std::pin::Pin; use std::task::{Context, Poll}; @@ -9,21 +7,31 @@ use std::task::{Context, Poll}; /// Stream of listeners #[derive(Debug)] #[must_use = "streams do nothing unless polled"] -pub struct Incoming { - inner: UnixListener, +pub struct Incoming<'a> { + inner: &'a mut UnixListener, } -impl Incoming { - pub(crate) fn new(listener: UnixListener) -> Incoming { +impl Incoming<'_> { + pub(crate) fn new(listener: &mut UnixListener) -> Incoming<'_> { Incoming { inner: listener } } + + #[doc(hidden)] // TODO: dox + pub fn poll_accept( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll<io::Result<UnixStream>> { + let (socket, _) = ready!(self.inner.poll_accept(cx))?; + Poll::Ready(Ok(socket)) + } } -impl Stream for Incoming { +#[cfg(feature = "stream")] +impl futures_core::Stream for Incoming<'_> { type Item = io::Result<UnixStream>; fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> { - let (socket, _) = ready!(Pin::new(&mut self.inner).poll_accept(cx))?; + let (socket, _) = ready!(self.inner.poll_accept(cx))?; Poll::Ready(Some(Ok(socket))) } } |