tokio_listener/
tokioutil.rs

1use crate::listener::{ListenerImpl, ListenerImplTcp};
2use crate::SomeSocketAddr;
3
4impl tokio_util::net::Listener for crate::Listener {
5    type Io = crate::Connection;
6
7    type Addr = SomeSocketAddr;
8
9    fn poll_accept(
10        &mut self,
11        cx: &mut std::task::Context<'_>,
12    ) -> std::task::Poll<std::io::Result<(Self::Io, Self::Addr)>> {
13        self.poll_accept(cx)
14    }
15
16    fn local_addr(&self) -> std::io::Result<Self::Addr> {
17        match &self.i {
18            ListenerImpl::Tcp(ListenerImplTcp { s, .. }) => {
19                Ok(SomeSocketAddr::Tcp(s.local_addr()?))
20            }
21            #[cfg(all(feature = "unix", unix))]
22            crate::listener::ListenerImpl::Unix(crate::listener::ListenerImplUnix {
23                s, ..
24            }) => Ok(SomeSocketAddr::Unix(s.local_addr()?)),
25            #[cfg(feature = "inetd")]
26            crate::listener::ListenerImpl::Stdio(_) => Ok(SomeSocketAddr::Stdio),
27            #[cfg(feature = "multi-listener")]
28            crate::listener::ListenerImpl::Multi(_) => Ok(SomeSocketAddr::Multiple),
29        }
30    }
31}