mirror of
https://github.com/fafhrd91/actix-net
synced 2025-06-26 16:17:43 +02:00
service trait takes request type parameter (#232)
This commit is contained in:
@ -27,12 +27,11 @@ impl<S, F> TracingService<S, F> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<S, F> Service for TracingService<S, F>
|
||||
impl<S, Req, F> Service<Req> for TracingService<S, F>
|
||||
where
|
||||
S: Service,
|
||||
F: Fn(&S::Request) -> Option<tracing::Span>,
|
||||
S: Service<Req>,
|
||||
F: Fn(&Req) -> Option<tracing::Span>,
|
||||
{
|
||||
type Request = S::Request;
|
||||
type Response = S::Response;
|
||||
type Error = S::Error;
|
||||
type Future = Either<S::Future, Instrumented<S::Future>>;
|
||||
@ -41,7 +40,7 @@ where
|
||||
self.inner.poll_ready(ctx)
|
||||
}
|
||||
|
||||
fn call(&mut self, req: Self::Request) -> Self::Future {
|
||||
fn call(&mut self, req: Req) -> Self::Future {
|
||||
let span = (self.make_span)(&req);
|
||||
let _enter = span.as_ref().map(|s| s.enter());
|
||||
|
||||
@ -74,18 +73,12 @@ impl<S, U, F> TracingTransform<S, U, F> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<S, U, F> Transform<S> for TracingTransform<S, U, F>
|
||||
impl<S, Req, U, F> Transform<S, Req> for TracingTransform<S, U, F>
|
||||
where
|
||||
S: Service,
|
||||
U: ServiceFactory<
|
||||
Request = S::Request,
|
||||
Response = S::Response,
|
||||
Error = S::Error,
|
||||
Service = S,
|
||||
>,
|
||||
F: Fn(&S::Request) -> Option<tracing::Span> + Clone,
|
||||
S: Service<Req>,
|
||||
U: ServiceFactory<Req, Response = S::Response, Error = S::Error, Service = S>,
|
||||
F: Fn(&Req) -> Option<tracing::Span> + Clone,
|
||||
{
|
||||
type Request = S::Request;
|
||||
type Response = S::Response;
|
||||
type Error = S::Error;
|
||||
type Transform = TracingService<S, F>;
|
||||
@ -110,14 +103,14 @@ where
|
||||
/// |req: &Request| Some(span!(Level::INFO, "request", req.id))
|
||||
/// );
|
||||
/// ```
|
||||
pub fn trace<S, U, F>(
|
||||
service_factory: U,
|
||||
pub fn trace<S, Req, I, F>(
|
||||
service_factory: I,
|
||||
make_span: F,
|
||||
) -> ApplyTransform<TracingTransform<S::Service, S, F>, S>
|
||||
) -> ApplyTransform<TracingTransform<S::Service, S, F>, S, Req>
|
||||
where
|
||||
S: ServiceFactory,
|
||||
F: Fn(&S::Request) -> Option<tracing::Span> + Clone,
|
||||
U: IntoServiceFactory<S>,
|
||||
I: IntoServiceFactory<S, Req>,
|
||||
S: ServiceFactory<Req>,
|
||||
F: Fn(&Req) -> Option<tracing::Span> + Clone,
|
||||
{
|
||||
apply(
|
||||
TracingTransform::new(make_span),
|
||||
|
Reference in New Issue
Block a user