use
{
crate :: { import::*, WsErr, WsErrKind, Accept } ,
};
pub struct Connections
{
incoming: Compat01As03<Incoming>,
}
impl Connections
{
pin_utils::unsafe_pinned!( incoming: Compat01As03<Incoming> );
pub fn new( incoming: Compat01As03<Incoming> ) -> Self
{
Self{ incoming }
}
}
impl Stream for Connections
{
type Item = Result< Compat01As03<Accept<TcpStream>>, WsErr >;
fn poll_next( self: Pin<&mut Self>, cx: &mut Context ) -> Poll< Option<Self::Item> >
{
match self.incoming().poll_next( cx )
{
Poll::Pending => Poll::Pending,
Poll::Ready( incoming ) =>
{
match incoming
{
Some( Ok(conn) ) =>
{
Poll::Ready(Some(Ok( Accept::new(conn).compat() )))
}
Some( Err(_) ) => Poll::Ready(Some(Err( WsErrKind::TcpConnection.into() ))),
None => Poll::Ready( None ),
}
}
}
}
}