tokio_listener/
tonic012.rs

1#[cfg(all(feature = "unix", unix))]
2use tonic_012::transport::server::UdsConnectInfo;
3use tonic_012::transport::server::{Connected, TcpConnectInfo};
4
5use crate::Connection;
6
7#[derive(Clone)]
8pub enum ListenerConnectInfo {
9    Tcp(TcpConnectInfo),
10    #[cfg(all(feature = "unix", unix))]
11    #[cfg_attr(docsrs_alt, doc(cfg(all(feature = "unix", unix))))]
12    Unix(UdsConnectInfo),
13    #[cfg(feature = "inetd")]
14    #[cfg_attr(docsrs_alt, doc(cfg(feature = "inetd")))]
15    Stdio,
16    Other,
17}
18
19impl Connected for Connection {
20    type ConnectInfo = ListenerConnectInfo;
21
22    fn connect_info(&self) -> Self::ConnectInfo {
23        if let Some(tcp_stream) = self.try_borrow_tcp() {
24            return ListenerConnectInfo::Tcp(tcp_stream.connect_info());
25        }
26        #[cfg(all(feature = "unix", unix))]
27        if let Some(unix_stream) = self.try_borrow_unix() {
28            return ListenerConnectInfo::Unix(unix_stream.connect_info());
29        }
30        #[cfg(feature = "inetd")]
31        if self.try_borrow_stdio().is_some() {
32            return ListenerConnectInfo::Stdio;
33        }
34
35        ListenerConnectInfo::Other
36    }
37}