@@ -7,17 +7,18 @@ use http::Response;
77use metrique:: AppendAndCloseOnDrop ;
88use metrique:: DefaultSink ;
99use metrique:: RootEntry ;
10- use metrique:: ServiceMetrics ;
1110use metrique:: writer:: EntrySink ;
1211use metrique_core:: CloseEntry ;
13- use metrique_writer:: GlobalEntrySink ;
1412use tower:: Layer ;
1513
14+ use crate :: DefaultInit ;
15+ use crate :: DefaultRq ;
16+ use crate :: DefaultRs ;
1617use crate :: ReqBody ;
1718use crate :: ResBody ;
1819use crate :: default:: DefaultMetrics ;
19- use crate :: layer :: builder :: DefaultRequestMetricsConfig ;
20- use crate :: layer :: builder :: DefaultResponseMetricsConfig ;
20+ use crate :: default :: DefaultRequestMetricsConfig ;
21+ use crate :: default :: DefaultResponseMetricsConfig ;
2122use crate :: layer:: builder:: MetricsLayerBuilder ;
2223use crate :: layer:: builder:: NeedsInitialization ;
2324use crate :: service:: MetricsLayerService ;
@@ -27,9 +28,9 @@ pub mod builder;
2728pub struct MetricsLayer <
2829 E = DefaultMetrics ,
2930 S = DefaultSink ,
30- I = fn ( ) -> AppendAndCloseOnDrop < E , S > ,
31- Rq = fn ( & mut Request < ReqBody > , & mut AppendAndCloseOnDrop < E , S > ) ,
32- Rs = fn ( & mut Response < ResBody > , & mut AppendAndCloseOnDrop < E , S > ) ,
31+ I = DefaultInit < E , S > ,
32+ Rq = DefaultRq < E , S > ,
33+ Rs = DefaultRs < E , S > ,
3334> where
3435 E : CloseEntry + Send + Sync + ' static ,
3536 S : EntrySink < RootEntry < E :: Closed > > + Send + Sync + ' static ,
@@ -38,36 +39,36 @@ pub struct MetricsLayer<
3839 Rs : Fn ( & mut Response < ResBody > , & mut AppendAndCloseOnDrop < E , S > ) + Clone + Send + Sync + ' static ,
3940{
4041 pub ( crate ) init_metrics : I ,
41- pub ( crate ) default_req_metrics_extension_fn :
42- fn ( & mut Request < ReqBody > , & mut AppendAndCloseOnDrop < E , S > ) ,
43- pub ( crate ) default_res_metrics_extension_fn :
44- fn ( & mut Response < ResBody > , & mut AppendAndCloseOnDrop < E , S > ) ,
4542 pub ( crate ) set_request_metrics : Option < Rq > ,
4643 pub ( crate ) set_response_metrics : Option < Rs > ,
44+ pub ( crate ) default_req_metrics_extension_fn :
45+ fn ( & mut Request < ReqBody > , & mut AppendAndCloseOnDrop < E , S > , DefaultRequestMetricsConfig ) ,
46+ pub ( crate ) default_res_metrics_extension_fn :
47+ fn ( & mut Response < ResBody > , & mut AppendAndCloseOnDrop < E , S > , DefaultResponseMetricsConfig ) ,
48+ pub ( crate ) default_req_metrics_config : DefaultRequestMetricsConfig ,
49+ pub ( crate ) default_res_metrics_config : DefaultResponseMetricsConfig ,
4750}
4851impl MetricsLayer {
49- pub fn new ( ) -> Self {
50- Self :: builder ( )
51- . init_metrics ( || DefaultMetrics :: default ( ) . append_on_drop ( ServiceMetrics :: sink ( ) ) )
52- . build ( )
52+ pub fn new ( ) -> MetricsLayer {
53+ Self :: builder ( ) . init_with_defaults ( ) . build ( )
5354 }
5455}
5556
5657impl < E , S , I , Rq , Rs > MetricsLayer < E , S , I , Rq , Rs >
5758where
59+ E : CloseEntry + Send + Sync + ' static ,
60+ S : EntrySink < RootEntry < E :: Closed > > + Send + Sync + ' static ,
5861 I : Fn ( ) -> AppendAndCloseOnDrop < E , S > + Clone + Send + Sync + ' static ,
5962 Rq : Fn ( & mut Request < ReqBody > , & mut AppendAndCloseOnDrop < E , S > ) + Clone + Send + Sync + ' static ,
6063 Rs : Fn ( & mut Response < ResBody > , & mut AppendAndCloseOnDrop < E , S > ) + Clone + Send + Sync + ' static ,
61- E : CloseEntry + Send + Sync + ' static ,
62- S : EntrySink < RootEntry < E :: Closed > > + Send + Sync + ' static ,
6364{
6465 pub fn builder ( ) -> MetricsLayerBuilder < NeedsInitialization , E , S , I , Rq , Rs > {
6566 MetricsLayerBuilder {
6667 init_metrics : None ,
6768 set_request_metrics : None ,
6869 set_response_metrics : None ,
69- default_request_metrics_config : DefaultRequestMetricsConfig :: default ( ) ,
70- default_response_metrics_config : DefaultResponseMetricsConfig :: default ( ) ,
70+ default_req_metrics_config : DefaultRequestMetricsConfig :: default ( ) ,
71+ default_res_metrics_config : DefaultResponseMetricsConfig :: default ( ) ,
7172 _state : PhantomData ,
7273 }
7374 }
@@ -76,22 +77,24 @@ where
7677impl < Ser , E , S , I , Rq , Rs > Layer < Ser > for MetricsLayer < E , S , I , Rq , Rs >
7778where
7879 Ser : Clone ,
80+ E : CloseEntry + Send + Sync + ' static ,
81+ S : EntrySink < RootEntry < E :: Closed > > + Send + Sync + ' static ,
7982 I : Fn ( ) -> AppendAndCloseOnDrop < E , S > + Clone + Send + Sync + ' static ,
8083 Rq : Fn ( & mut Request < ReqBody > , & mut AppendAndCloseOnDrop < E , S > ) + Clone + Send + Sync + ' static ,
8184 Rs : Fn ( & mut Response < ResBody > , & mut AppendAndCloseOnDrop < E , S > ) + Clone + Send + Sync + ' static ,
82- E : CloseEntry + Send + Sync + ' static ,
83- S : EntrySink < RootEntry < E :: Closed > > + Send + Sync + ' static ,
8485{
85- type Service = MetricsLayerService < Ser , I , Rq , Rs , E , S > ;
86+ type Service = MetricsLayerService < Ser , E , S , I , Rq , Rs > ;
8687
8788 fn layer ( & self , inner : Ser ) -> Self :: Service {
8889 MetricsLayerService {
8990 inner,
9091 init_metrics : self . init_metrics . clone ( ) ,
91- default_req_metrics_extension_fn : self . default_req_metrics_extension_fn ,
92- default_res_metrics_extension_fn : self . default_res_metrics_extension_fn ,
9392 set_request_metrics : self . set_request_metrics . clone ( ) ,
9493 set_response_metrics : self . set_response_metrics . clone ( ) ,
94+ default_req_metrics_extension_fn : self . default_req_metrics_extension_fn . clone ( ) ,
95+ default_res_metrics_extension_fn : self . default_res_metrics_extension_fn . clone ( ) ,
96+ default_req_metrics_config : self . default_req_metrics_config . clone ( ) ,
97+ default_res_metrics_config : self . default_res_metrics_config . clone ( ) ,
9598 }
9699 }
97100}
0 commit comments