From c1443e25285a2a396b1a0d7adf4eacc4541a291d Mon Sep 17 00:00:00 2001 From: tottoto Date: Sun, 10 Dec 2023 05:47:58 +0900 Subject: [PATCH] chore(tonic): Remove API when they only return None --- tonic/src/request.rs | 120 ++++++++++++------------------------- tonic/src/transport/mod.rs | 5 +- tonic/src/transport/tls.rs | 12 ---- 3 files changed, 41 insertions(+), 96 deletions(-) diff --git a/tonic/src/request.rs b/tonic/src/request.rs index 5edd88c84..cdf475755 100644 --- a/tonic/src/request.rs +++ b/tonic/src/request.rs @@ -1,15 +1,14 @@ use crate::metadata::{MetadataMap, MetadataValue}; #[cfg(feature = "transport")] use crate::transport::server::TcpConnectInfo; -#[cfg(all(feature = "transport", feature = "tls"))] -use crate::transport::server::TlsConnectInfo; -#[cfg(feature = "transport")] -#[allow(deprecated)] -use crate::transport::Certificate; +#[cfg(feature = "tls")] +use crate::transport::{server::TlsConnectInfo, Certificate}; use crate::Extensions; #[cfg(feature = "transport")] +use std::net::SocketAddr; +#[cfg(feature = "tls")] use std::sync::Arc; -use std::{net::SocketAddr, time::Duration}; +use std::time::Duration; use tokio_stream::Stream; /// A gRPC request and metadata from an RPC call. @@ -210,39 +209,25 @@ impl Request { /// This will return `None` if the `IO` type used /// does not implement `Connected` or when using a unix domain socket. /// This currently only works on the server side. - #[cfg_attr( - not(feature = "transport"), - deprecated( - since = "0.10.3", - note = "`remote_addr` only returns `None` without transport feature. This API will require transport feature.", - ) - )] + #[cfg(feature = "transport")] pub fn local_addr(&self) -> Option { - #[cfg(feature = "transport")] + #[cfg(feature = "tls")] { - #[cfg(feature = "tls")] - { - self.extensions() - .get::() - .and_then(|i| i.local_addr()) - .or_else(|| { - self.extensions() - .get::>() - .and_then(|i| i.get_ref().local_addr()) - }) - } - - #[cfg(not(feature = "tls"))] - { - self.extensions() - .get::() - .and_then(|i| i.local_addr()) - } + self.extensions() + .get::() + .and_then(|i| i.local_addr()) + .or_else(|| { + self.extensions() + .get::>() + .and_then(|i| i.get_ref().local_addr()) + }) } - #[cfg(not(feature = "transport"))] + #[cfg(not(feature = "tls"))] { - None + self.extensions() + .get::() + .and_then(|i| i.local_addr()) } } @@ -251,39 +236,25 @@ impl Request { /// This will return `None` if the `IO` type used /// does not implement `Connected` or when using a unix domain socket. /// This currently only works on the server side. - #[cfg_attr( - not(feature = "transport"), - deprecated( - since = "0.10.3", - note = "`remote_addr` only returns `None` without transport feature. This API will require transport feature.", - ) - )] + #[cfg(feature = "transport")] pub fn remote_addr(&self) -> Option { - #[cfg(feature = "transport")] + #[cfg(feature = "tls")] { - #[cfg(feature = "tls")] - { - self.extensions() - .get::() - .and_then(|i| i.remote_addr()) - .or_else(|| { - self.extensions() - .get::>() - .and_then(|i| i.get_ref().remote_addr()) - }) - } - - #[cfg(not(feature = "tls"))] - { - self.extensions() - .get::() - .and_then(|i| i.remote_addr()) - } + self.extensions() + .get::() + .and_then(|i| i.remote_addr()) + .or_else(|| { + self.extensions() + .get::>() + .and_then(|i| i.get_ref().remote_addr()) + }) } - #[cfg(not(feature = "transport"))] + #[cfg(not(feature = "tls"))] { - None + self.extensions() + .get::() + .and_then(|i| i.remote_addr()) } } @@ -293,28 +264,11 @@ impl Request { /// and is mostly used for mTLS. This currently only returns /// `Some` on the server side of the `transport` server with /// TLS enabled connections. - #[cfg(feature = "transport")] - #[cfg_attr( - all(feature = "transport", not(feature = "tls")), - deprecated( - since = "0.10.3", - note = "`peer_certs` only returns `None` without tls feature. This API will require tls feature.", - ) - )] - #[cfg_attr(docsrs, doc(cfg(feature = "transport")))] - #[allow(deprecated)] + #[cfg(feature = "tls")] pub fn peer_certs(&self) -> Option>> { - #[cfg(feature = "tls")] - { - self.extensions() - .get::>() - .and_then(|i| i.peer_certs()) - } - - #[cfg(not(feature = "tls"))] - { - None - } + self.extensions() + .get::>() + .and_then(|i| i.peer_certs()) } /// Set the max duration the request is allowed to take. diff --git a/tonic/src/transport/mod.rs b/tonic/src/transport/mod.rs index c676bfb92..6b5361143 100644 --- a/tonic/src/transport/mod.rs +++ b/tonic/src/transport/mod.rs @@ -92,6 +92,8 @@ pub mod server; mod error; mod service; +#[cfg(feature = "tls")] +#[cfg_attr(docsrs, doc(cfg(feature = "tls")))] mod tls; #[doc(inline)] @@ -103,7 +105,8 @@ pub use self::error::Error; pub use self::server::Server; #[doc(inline)] pub use self::service::grpc_timeout::TimeoutExpired; -#[allow(deprecated)] +#[cfg(feature = "tls")] +#[cfg_attr(docsrs, doc(cfg(feature = "tls")))] pub use self::tls::Certificate; #[doc(inline)] /// A deprecated re-export. Please use `tonic::server::NamedService` directly. diff --git a/tonic/src/transport/tls.rs b/tonic/src/transport/tls.rs index 39fcc20c5..1dd4c06a4 100644 --- a/tonic/src/transport/tls.rs +++ b/tonic/src/transport/tls.rs @@ -1,26 +1,16 @@ /// Represents a X509 certificate. -#[cfg_attr( - not(feature = "tls"), - deprecated( - since = "0.10.3", - note = "`Certificate` is used only by deprecated API without tls feature.", - ) -)] #[derive(Debug, Clone)] pub struct Certificate { pub(crate) pem: Vec, } /// Represents a private key and X509 certificate. -#[cfg(feature = "tls")] -#[cfg_attr(docsrs, doc(cfg(feature = "tls")))] #[derive(Debug, Clone)] pub struct Identity { pub(crate) cert: Certificate, pub(crate) key: Vec, } -#[allow(deprecated)] impl Certificate { /// Parse a PEM encoded X509 Certificate. /// @@ -46,14 +36,12 @@ impl Certificate { } } -#[allow(deprecated)] impl AsRef<[u8]> for Certificate { fn as_ref(&self) -> &[u8] { self.pem.as_ref() } } -#[cfg(feature = "tls")] impl Identity { /// Parse a PEM encoded certificate and private key. ///