mirror of
https://github.com/fafhrd91/actix-net
synced 2024-11-27 19:12:56 +01:00
fix error mapping in MapErrNewService
This commit is contained in:
parent
c7543e7228
commit
2818540d69
@ -390,7 +390,8 @@ pub struct AndThen<A, B> {
|
|||||||
impl<A, B> AndThen<A, B>
|
impl<A, B> AndThen<A, B>
|
||||||
where
|
where
|
||||||
A: Service,
|
A: Service,
|
||||||
B: Service<Request = A::Response, Error = A::Error>,
|
A::Error: Into<B::Error>,
|
||||||
|
B: Service<Request = A::Response>,
|
||||||
{
|
{
|
||||||
/// Create new `AndThen` combinator
|
/// Create new `AndThen` combinator
|
||||||
pub fn new(a: A, b: B) -> Self {
|
pub fn new(a: A, b: B) -> Self {
|
||||||
@ -404,7 +405,8 @@ where
|
|||||||
impl<A, B> Service for AndThen<A, B>
|
impl<A, B> Service for AndThen<A, B>
|
||||||
where
|
where
|
||||||
A: Service,
|
A: Service,
|
||||||
B: Service<Request = A::Response, Error = A::Error>,
|
A::Error: Into<B::Error>,
|
||||||
|
B: Service<Request = A::Response>,
|
||||||
{
|
{
|
||||||
type Request = A::Request;
|
type Request = A::Request;
|
||||||
type Response = B::Response;
|
type Response = B::Response;
|
||||||
@ -412,11 +414,12 @@ where
|
|||||||
type Future = AndThenFuture<A, B>;
|
type Future = AndThenFuture<A, B>;
|
||||||
|
|
||||||
fn poll_ready(&mut self) -> Poll<(), Self::Error> {
|
fn poll_ready(&mut self) -> Poll<(), Self::Error> {
|
||||||
let res = self.a.poll_ready();
|
match self.a.poll_ready() {
|
||||||
if let Ok(Async::Ready(_)) = res {
|
Ok(Async::Ready(_)) => {
|
||||||
self.b.borrow_mut().poll_ready()
|
self.b.borrow_mut().poll_ready()
|
||||||
} else {
|
},
|
||||||
res
|
Ok(Async::NotReady) => Ok(Async::NotReady),
|
||||||
|
Err(err) => Err(err.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,7 +431,8 @@ where
|
|||||||
pub struct AndThenFuture<A, B>
|
pub struct AndThenFuture<A, B>
|
||||||
where
|
where
|
||||||
A: Service,
|
A: Service,
|
||||||
B: Service<Request = A::Response, Error = A::Error>,
|
A::Error: Into<B::Error>,
|
||||||
|
B: Service<Request = A::Response>,
|
||||||
{
|
{
|
||||||
b: Rc<RefCell<B>>,
|
b: Rc<RefCell<B>>,
|
||||||
fut_b: Option<B::Future>,
|
fut_b: Option<B::Future>,
|
||||||
@ -438,7 +442,8 @@ where
|
|||||||
impl<A, B> AndThenFuture<A, B>
|
impl<A, B> AndThenFuture<A, B>
|
||||||
where
|
where
|
||||||
A: Service,
|
A: Service,
|
||||||
B: Service<Request = A::Response, Error = A::Error>,
|
A::Error: Into<B::Error>,
|
||||||
|
B: Service<Request = A::Response>,
|
||||||
{
|
{
|
||||||
fn new(fut_a: A::Future, b: Rc<RefCell<B>>) -> Self {
|
fn new(fut_a: A::Future, b: Rc<RefCell<B>>) -> Self {
|
||||||
AndThenFuture {
|
AndThenFuture {
|
||||||
@ -452,7 +457,8 @@ where
|
|||||||
impl<A, B> Future for AndThenFuture<A, B>
|
impl<A, B> Future for AndThenFuture<A, B>
|
||||||
where
|
where
|
||||||
A: Service,
|
A: Service,
|
||||||
B: Service<Request = A::Response, Error = A::Error>,
|
A::Error: Into<B::Error>,
|
||||||
|
B: Service<Request = A::Response>,
|
||||||
{
|
{
|
||||||
type Item = B::Response;
|
type Item = B::Response;
|
||||||
type Error = B::Error;
|
type Error = B::Error;
|
||||||
@ -462,12 +468,13 @@ where
|
|||||||
return fut.poll();
|
return fut.poll();
|
||||||
}
|
}
|
||||||
|
|
||||||
match self.fut_a.poll()? {
|
match self.fut_a.poll() {
|
||||||
Async::Ready(resp) => {
|
Ok(Async::Ready(resp)) => {
|
||||||
self.fut_b = Some(self.b.borrow_mut().call(resp));
|
self.fut_b = Some(self.b.borrow_mut().call(resp));
|
||||||
self.poll()
|
self.poll()
|
||||||
}
|
}
|
||||||
Async::NotReady => Ok(Async::NotReady),
|
Ok(Async::NotReady) => Ok(Async::NotReady),
|
||||||
|
Err(err) => Err(err.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -496,15 +503,15 @@ impl<A, B> NewService for AndThenNewService<A, B>
|
|||||||
where
|
where
|
||||||
A: NewService<
|
A: NewService<
|
||||||
Response = B::Request,
|
Response = B::Request,
|
||||||
Error = B::Error,
|
|
||||||
Config = B::Config,
|
Config = B::Config,
|
||||||
InitError = B::InitError,
|
InitError = B::InitError,
|
||||||
>,
|
>,
|
||||||
|
A::Error: Into<B::Error>,
|
||||||
B: NewService,
|
B: NewService,
|
||||||
{
|
{
|
||||||
type Request = A::Request;
|
type Request = A::Request;
|
||||||
type Response = B::Response;
|
type Response = B::Response;
|
||||||
type Error = A::Error;
|
type Error = B::Error;
|
||||||
type Service = AndThen<A::Service, B::Service>;
|
type Service = AndThen<A::Service, B::Service>;
|
||||||
|
|
||||||
type Config = A::Config;
|
type Config = A::Config;
|
||||||
@ -518,7 +525,8 @@ where
|
|||||||
|
|
||||||
impl<A, B> Clone for AndThenNewService<A, B>
|
impl<A, B> Clone for AndThenNewService<A, B>
|
||||||
where
|
where
|
||||||
A: NewService<Response = B::Request, Error = B::Error, InitError = B::InitError> + Clone,
|
A: NewService<Response = B::Request, InitError = B::InitError> + Clone,
|
||||||
|
A::Error: Into<B::Error>,
|
||||||
B: NewService + Clone,
|
B: NewService + Clone,
|
||||||
{
|
{
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
@ -557,8 +565,9 @@ where
|
|||||||
|
|
||||||
impl<A, B> Future for AndThenNewServiceFuture<A, B>
|
impl<A, B> Future for AndThenNewServiceFuture<A, B>
|
||||||
where
|
where
|
||||||
A: NewService<Response = B::Request, Error = B::Error, InitError = B::InitError>,
|
A: NewService,
|
||||||
B: NewService,
|
A::Error: Into<B::Error>,
|
||||||
|
B: NewService<Request = A::Response, InitError = A::InitError>,
|
||||||
{
|
{
|
||||||
type Item = AndThen<A::Service, B::Service>;
|
type Item = AndThen<A::Service, B::Service>;
|
||||||
type Error = B::InitError;
|
type Error = B::InitError;
|
||||||
@ -608,7 +617,8 @@ where
|
|||||||
impl<A, F, E> Service for MapErr<A, F, E>
|
impl<A, F, E> Service for MapErr<A, F, E>
|
||||||
where
|
where
|
||||||
A: Service,
|
A: Service,
|
||||||
F: Fn(A::Error) -> E + Clone,
|
F: Fn(A::Error) -> E,
|
||||||
|
F: Clone,
|
||||||
{
|
{
|
||||||
type Request = A::Request;
|
type Request = A::Request;
|
||||||
type Response = A::Response;
|
type Response = A::Response;
|
||||||
@ -681,7 +691,7 @@ where
|
|||||||
impl<A, F, E> Clone for MapErrNewService<A, F, E>
|
impl<A, F, E> Clone for MapErrNewService<A, F, E>
|
||||||
where
|
where
|
||||||
A: NewService + Clone,
|
A: NewService + Clone,
|
||||||
F: Fn(A::InitError) -> E + Clone,
|
F: Fn(A::Error) -> E + Clone,
|
||||||
{
|
{
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
Loading…
Reference in New Issue
Block a user