use super::Connected; use std::sync::Arc; /// Connection info for Unix domain socket streams. /// /// This type will be accessible through [request extensions][ext] if you're using /// a unix stream. /// /// See [Connected] for more details. /// /// [ext]: crate::Request::extensions /// [Connected]: crate::transport::server::Connected #[cfg_attr(docsrs, doc(cfg(unix)))] #[derive(Clone, Debug)] pub struct UdsConnectInfo { /// Peer address. This will be "unnamed" for client unix sockets. pub peer_addr: Option>, /// Process credentials for the unix socket. pub peer_cred: Option, } impl Connected for tokio::net::UnixStream { type ConnectInfo = UdsConnectInfo; fn connect_info(&self) -> Self::ConnectInfo { UdsConnectInfo { peer_addr: self.peer_addr().ok().map(Arc::new), peer_cred: self.peer_cred().ok(), } } }