tokio_listener/
tokioutil.rs1use 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}