tokio_listener/
tonic012.rs1#[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}