use futures_util::future::ready instead of async block in factory closure

This commit is contained in:
fakeshadow 2021-03-26 21:12:03 +08:00
parent a32309e46b
commit 01cdcf980d
1 changed files with 19 additions and 14 deletions

View File

@ -12,6 +12,7 @@ use actix_service::{
}; };
use bytes::Bytes; use bytes::Bytes;
use futures_core::{future::LocalBoxFuture, ready}; use futures_core::{future::LocalBoxFuture, ready};
use futures_util::future::ready;
use h2::server::{handshake, Handshake}; use h2::server::{handshake, Handshake};
use log::error; use log::error;
@ -80,11 +81,11 @@ where
Error = DispatchError, Error = DispatchError,
InitError = S::InitError, InitError = S::InitError,
> { > {
pipeline_factory(fn_factory(|| async { pipeline_factory(fn_factory(|| {
Ok::<_, S::InitError>(fn_service(|io: TcpStream| async { ready(Ok::<_, S::InitError>(fn_service(|io: TcpStream| {
let peer_addr = io.peer_addr().ok(); let peer_addr = io.peer_addr().ok();
Ok::<_, DispatchError>((io, peer_addr)) ready(Ok::<_, DispatchError>((io, peer_addr)))
})) })))
})) }))
.and_then(self) .and_then(self)
} }
@ -123,11 +124,13 @@ mod openssl {
.map_err(TlsError::Tls) .map_err(TlsError::Tls)
.map_init_err(|_| panic!()), .map_init_err(|_| panic!()),
) )
.and_then(fn_factory(|| async { .and_then(fn_factory(|| {
Ok::<_, S::InitError>(fn_service(|io: TlsStream<TcpStream>| async { ready(Ok::<_, S::InitError>(fn_service(
let peer_addr = io.get_ref().peer_addr().ok(); |io: TlsStream<TcpStream>| {
Ok((io, peer_addr)) let peer_addr = io.get_ref().peer_addr().ok();
})) ready(Ok((io, peer_addr)))
},
)))
})) }))
.and_then(self.map_err(TlsError::Service)) .and_then(self.map_err(TlsError::Service))
} }
@ -170,11 +173,13 @@ mod rustls {
.map_err(TlsError::Tls) .map_err(TlsError::Tls)
.map_init_err(|_| panic!()), .map_init_err(|_| panic!()),
) )
.and_then(fn_factory(|| async { .and_then(fn_factory(|| {
Ok::<_, S::InitError>(fn_service(|io: TlsStream<TcpStream>| async { ready(Ok::<_, S::InitError>(fn_service(
let peer_addr = io.get_ref().0.peer_addr().ok(); |io: TlsStream<TcpStream>| {
Ok((io, peer_addr)) let peer_addr = io.get_ref().0.peer_addr().ok();
})) ready(Ok((io, peer_addr)))
},
)))
})) }))
.and_then(self.map_err(TlsError::Service)) .and_then(self.map_err(TlsError::Service))
} }