1use super::TcpListener;
2use super::TcpStream;
3
4use futures::stream::Stream;
5use futures::{Async, Poll};
6use std::io;
7
8#[must_use = "streams do nothing unless polled"]
11#[derive(Debug)]
12pub struct Incoming {
13 inner: TcpListener,
14}
15
16impl Incoming {
17 pub(crate) fn new(listener: TcpListener) -> Incoming {
18 Incoming { inner: listener }
19 }
20}
21
22impl Stream for Incoming {
23 type Item = TcpStream;
24 type Error = io::Error;
25
26 fn poll(&mut self) -> Poll<Option<Self::Item>, io::Error> {
27 let (socket, _) = try_ready!(self.inner.poll_accept());
28 Ok(Async::Ready(Some(socket)))
29 }
30}