From ed833606052f2fa63623a60525d3e35fcc2e2c6b Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Thu, 14 Nov 2019 15:13:41 +0600 Subject: [PATCH] fix boxed service --- actix-service/src/boxed.rs | 39 +++++++------------------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/actix-service/src/boxed.rs b/actix-service/src/boxed.rs index cee4ad2b..78f1d79a 100644 --- a/actix-service/src/boxed.rs +++ b/actix-service/src/boxed.rs @@ -1,10 +1,5 @@ -#![allow(unused_imports, unused_variables, dead_code)] - -use std::future::Future; -use std::pin::Pin; use std::task::{Context, Poll}; -use futures::future::{err, ok, Either, Ready}; use futures::future::{FutureExt, LocalBoxFuture}; use crate::{Service, ServiceFactory}; @@ -18,8 +13,7 @@ pub type BoxedService = Box< >, >; -pub type BoxedServiceResponse = - Either>, LocalBoxFuture<'static, Result>>; +pub type BoxedServiceResponse = LocalBoxFuture<'static, Result>; pub struct BoxedNewService(Inner); @@ -115,15 +109,10 @@ where type Future = LocalBoxFuture<'static, Result>; fn new_service(&self, cfg: &C) -> Self::Future { - /* TODO: Figure out what the hell is hapenning here - Box::new( - self.service - .new_service(cfg) - .into_future() - .map(ServiceWrapper::boxed), - ) - */ - unimplemented!() + self.factory + .new_service(cfg) + .map(|res| res.map(ServiceWrapper::boxed)) + .boxed_local() } } @@ -147,27 +136,13 @@ where type Request = Req; type Response = Res; type Error = Err; - type Future = Either< - Ready>, - LocalBoxFuture<'static, Result>, - >; + type Future = LocalBoxFuture<'static, Result>; fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll> { self.0.poll_ready(ctx) } fn call(&mut self, req: Self::Request) -> Self::Future { - unimplemented!() + self.0.call(req).boxed_local() } - - /* - fn call(&mut self, req: Self::Request) -> Self::Future { - let mut fut = self.0.call(req); - match fut.poll() { - Ok(Async::Ready(res)) => Either::A(ok(res)), - Err(e) => Either::A(err(e)), - Ok(Async::NotReady) => Either::B(Box::new(fut)), - } - } - */ }