From 00c4a3ac08c20370e794f2b3e2f9c9391450fabb Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Sun, 27 Dec 2020 02:55:51 +0000 Subject: [PATCH] add forward_ready macro --- actix-service/src/apply.rs | 4 +--- actix-service/src/lib.rs | 12 ++++++++++++ actix-service/src/map.rs | 4 +--- actix-tracing/src/lib.rs | 5 +---- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/actix-service/src/apply.rs b/actix-service/src/apply.rs index ea788706..7a963610 100644 --- a/actix-service/src/apply.rs +++ b/actix-service/src/apply.rs @@ -94,9 +94,7 @@ where type Error = Err; type Future = Fut; - fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { - Poll::Ready(ready!(self.service.poll_ready(cx))) - } + crate::forward_ready!(service); fn call(&mut self, req: Req) -> Self::Future { (self.wrap_fn)(req, &mut self.service) diff --git a/actix-service/src/lib.rs b/actix-service/src/lib.rs index df0ab2b8..8cc97fd7 100644 --- a/actix-service/src/lib.rs +++ b/actix-service/src/lib.rs @@ -371,3 +371,15 @@ macro_rules! always_ready { } }; } + +#[macro_export] +macro_rules! forward_ready { + ($field:ident) => { + fn poll_ready( + &mut self, + cx: &mut ::std::task::Context<'_>, + ) -> ::std::task::Poll> { + self.$field.poll_ready(cx) + } + }; +} diff --git a/actix-service/src/map.rs b/actix-service/src/map.rs index 1460c065..87dbd856 100644 --- a/actix-service/src/map.rs +++ b/actix-service/src/map.rs @@ -52,9 +52,7 @@ where type Error = A::Error; type Future = MapFuture; - fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll> { - self.service.poll_ready(ctx) - } + crate::forward_ready!(service); fn call(&mut self, req: Req) -> Self::Future { MapFuture::new(self.service.call(req), self.f.clone()) diff --git a/actix-tracing/src/lib.rs b/actix-tracing/src/lib.rs index 36aa21f2..52a7ca5b 100644 --- a/actix-tracing/src/lib.rs +++ b/actix-tracing/src/lib.rs @@ -5,7 +5,6 @@ #![doc(html_favicon_url = "https://actix.rs/favicon.ico")] use std::marker::PhantomData; -use std::task::{Context, Poll}; use actix_service::{ apply, dev::ApplyTransform, IntoServiceFactory, Service, ServiceFactory, Transform, @@ -36,9 +35,7 @@ where type Error = S::Error; type Future = Either>; - fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll> { - self.inner.poll_ready(ctx) - } + actix_service::forward_ready!(inner); fn call(&mut self, req: Req) -> Self::Future { let span = (self.make_span)(&req);