diff --git a/tower-http/CHANGELOG.md b/tower-http/CHANGELOG.md index ddb718c9..5cf4d2ce 100644 --- a/tower-http/CHANGELOG.md +++ b/tower-http/CHANGELOG.md @@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Added -- None. +- **trace:** Add default generic parameters for `ResponseBody` and `ResponseFuture` ([#455]) +- **trace:** Add type aliases `HttpMakeClassifier` and `GrpcMakeClassifier` ([#455]) ## Changed @@ -23,6 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - None. +[#455]: https://github.com/tower-rs/tower-http/pull/455 + # 0.5.0 (November 21, 2023) ## Changed diff --git a/tower-http/src/builder.rs b/tower-http/src/builder.rs index d8d14aa0..4c27a95c 100644 --- a/tower-http/src/builder.rs +++ b/tower-http/src/builder.rs @@ -1,8 +1,5 @@ use tower::ServiceBuilder; -#[cfg(feature = "trace")] -use crate::classify::{GrpcErrorsAsFailures, ServerErrorsAsFailures, SharedClassifier}; - #[allow(unused_imports)] use http::header::HeaderName; #[allow(unused_imports)] @@ -126,7 +123,7 @@ pub trait ServiceBuilderExt: crate::sealed::Sealed + Sized { #[cfg(feature = "trace")] fn trace_for_http( self, - ) -> ServiceBuilder>, L>>; + ) -> ServiceBuilder, L>>; /// High level tracing that classifies responses using gRPC headers. /// @@ -140,7 +137,7 @@ pub trait ServiceBuilderExt: crate::sealed::Sealed + Sized { #[cfg(feature = "trace")] fn trace_for_grpc( self, - ) -> ServiceBuilder>, L>>; + ) -> ServiceBuilder, L>>; /// Follow redirect resposes using the [`Standard`] policy. /// @@ -427,16 +424,14 @@ impl ServiceBuilderExt for ServiceBuilder { #[cfg(feature = "trace")] fn trace_for_http( self, - ) -> ServiceBuilder>, L>> - { + ) -> ServiceBuilder, L>> { self.layer(crate::trace::TraceLayer::new_for_http()) } #[cfg(feature = "trace")] fn trace_for_grpc( self, - ) -> ServiceBuilder>, L>> - { + ) -> ServiceBuilder, L>> { self.layer(crate::trace::TraceLayer::new_for_grpc()) } diff --git a/tower-http/src/trace/body.rs b/tower-http/src/trace/body.rs index 7a27cd90..d713f243 100644 --- a/tower-http/src/trace/body.rs +++ b/tower-http/src/trace/body.rs @@ -1,4 +1,4 @@ -use super::{OnBodyChunk, OnEos, OnFailure}; +use super::{DefaultOnBodyChunk, DefaultOnEos, DefaultOnFailure, OnBodyChunk, OnEos, OnFailure}; use crate::classify::ClassifyEos; use http_body::{Body, Frame}; use pin_project_lite::pin_project; @@ -14,7 +14,7 @@ pin_project! { /// Response body for [`Trace`]. /// /// [`Trace`]: super::Trace - pub struct ResponseBody { + pub struct ResponseBody { #[pin] pub(crate) inner: B, pub(crate) classify_eos: Option, diff --git a/tower-http/src/trace/future.rs b/tower-http/src/trace/future.rs index feac51bf..e205ea32 100644 --- a/tower-http/src/trace/future.rs +++ b/tower-http/src/trace/future.rs @@ -1,4 +1,7 @@ -use super::{OnBodyChunk, OnEos, OnFailure, OnResponse, ResponseBody}; +use super::{ + DefaultOnBodyChunk, DefaultOnEos, DefaultOnFailure, DefaultOnResponse, OnBodyChunk, OnEos, + OnFailure, OnResponse, ResponseBody, +}; use crate::classify::{ClassifiedResponse, ClassifyResponse}; use http::Response; use http_body::Body; @@ -15,7 +18,7 @@ pin_project! { /// Response future for [`Trace`]. /// /// [`Trace`]: super::Trace - pub struct ResponseFuture { + pub struct ResponseFuture { #[pin] pub(crate) inner: F, pub(crate) span: Span, diff --git a/tower-http/src/trace/layer.rs b/tower-http/src/trace/layer.rs index 7314f754..21ff321c 100644 --- a/tower-http/src/trace/layer.rs +++ b/tower-http/src/trace/layer.rs @@ -1,6 +1,6 @@ use super::{ DefaultMakeSpan, DefaultOnBodyChunk, DefaultOnEos, DefaultOnFailure, DefaultOnRequest, - DefaultOnResponse, Trace, + DefaultOnResponse, GrpcMakeClassifier, HttpMakeClassifier, Trace, }; use crate::classify::{ GrpcErrorsAsFailures, MakeClassifier, ServerErrorsAsFailures, SharedClassifier, @@ -176,7 +176,7 @@ impl } } -impl TraceLayer> { +impl TraceLayer { /// Create a new [`TraceLayer`] using [`ServerErrorsAsFailures`] which supports classifying /// regular HTTP responses based on the status code. pub fn new_for_http() -> Self { @@ -192,7 +192,7 @@ impl TraceLayer> { } } -impl TraceLayer> { +impl TraceLayer { /// Create a new [`TraceLayer`] using [`GrpcErrorsAsFailures`] which supports classifying /// gRPC responses and streams based on the `grpc-status` header. pub fn new_for_grpc() -> Self { diff --git a/tower-http/src/trace/mod.rs b/tower-http/src/trace/mod.rs index 255bb703..0b57a18d 100644 --- a/tower-http/src/trace/mod.rs +++ b/tower-http/src/trace/mod.rs @@ -400,7 +400,16 @@ pub use self::{ on_response::{DefaultOnResponse, OnResponse}, service::Trace, }; -use crate::LatencyUnit; +use crate::{ + classify::{GrpcErrorsAsFailures, ServerErrorsAsFailures, SharedClassifier}, + LatencyUnit, +}; + +/// MakeClassifier for HTTP requests. +pub type HttpMakeClassifier = SharedClassifier; + +/// MakeClassifier for gRPC requests. +pub type GrpcMakeClassifier = SharedClassifier; macro_rules! event_dynamic_lvl { ( $(target: $target:expr,)? $(parent: $parent:expr,)? $lvl:expr, $($tt:tt)* ) => { diff --git a/tower-http/src/trace/service.rs b/tower-http/src/trace/service.rs index f58172f3..1ab4c1f0 100644 --- a/tower-http/src/trace/service.rs +++ b/tower-http/src/trace/service.rs @@ -1,7 +1,7 @@ use super::{ DefaultMakeSpan, DefaultOnBodyChunk, DefaultOnEos, DefaultOnFailure, DefaultOnRequest, - DefaultOnResponse, MakeSpan, OnBodyChunk, OnEos, OnFailure, OnRequest, OnResponse, - ResponseBody, ResponseFuture, TraceLayer, + DefaultOnResponse, GrpcMakeClassifier, HttpMakeClassifier, MakeSpan, OnBodyChunk, OnEos, + OnFailure, OnRequest, OnResponse, ResponseBody, ResponseFuture, TraceLayer, }; use crate::classify::{ GrpcErrorsAsFailures, MakeClassifier, ServerErrorsAsFailures, SharedClassifier, @@ -207,7 +207,7 @@ impl impl Trace< S, - SharedClassifier, + HttpMakeClassifier, DefaultMakeSpan, DefaultOnRequest, DefaultOnResponse, @@ -235,7 +235,7 @@ impl impl Trace< S, - SharedClassifier, + GrpcMakeClassifier, DefaultMakeSpan, DefaultOnRequest, DefaultOnResponse,