1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-27 03:51:10 +00:00

Change service response to Into<Response>

This commit is contained in:
Nikolay Kim 2019-02-09 08:44:22 -08:00
parent ed7ca7fe07
commit f3ed1b601e
4 changed files with 41 additions and 22 deletions

View file

@ -85,8 +85,9 @@ impl<S: Service, B: MessageBody> State<S, B> {
impl<T, S, B> Dispatcher<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request, Response = Response<B>>,
S: Service<Request = Request>,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
/// Create http/1 dispatcher.
@ -139,8 +140,9 @@ where
impl<T, S, B> InnerDispatcher<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request, Response = Response<B>>,
S: Service<Request = Request>,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
fn can_read(&self) -> bool {
@ -224,7 +226,7 @@ where
State::ServiceCall(mut fut) => {
match fut.poll().map_err(DispatchError::Service)? {
Async::Ready(res) => {
let (res, body) = res.replace_body(());
let (res, body) = res.into().replace_body(());
Some(self.send_response(res, body)?)
}
Async::NotReady => {
@ -287,7 +289,7 @@ where
let mut task = self.service.call(req);
match task.poll().map_err(DispatchError::Service)? {
Async::Ready(res) => {
let (res, body) = res.replace_body(());
let (res, body) = res.into().replace_body(());
self.send_response(res, body)
}
Async::NotReady => Ok(State::ServiceCall(task)),
@ -459,8 +461,9 @@ where
impl<T, S, B> Future for Dispatcher<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request, Response = Response<B>>,
S: Service<Request = Request>,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
type Item = H1ServiceResult<T>;

View file

@ -28,9 +28,10 @@ pub struct H1Service<T, S, B> {
impl<T, S, B> H1Service<T, S, B>
where
S: NewService<Request = Request<Payload>, Response = Response<B>> + Clone,
S: NewService<Request = Request<Payload>> + Clone,
S::Service: Clone,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
/// Create new `HttpService` instance.
@ -53,9 +54,10 @@ where
impl<T, S, B> NewService for H1Service<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: NewService<Request = Request, Response = Response<B>> + Clone,
S: NewService<Request = Request> + Clone,
S::Service: Clone,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
type Request = T;
@ -214,9 +216,10 @@ pub struct H1ServiceResponse<T, S: NewService, B> {
impl<T, S, B> Future for H1ServiceResponse<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: NewService<Request = Request, Response = Response<B>>,
S: NewService<Request = Request>,
S::Service: Clone,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
type Item = H1ServiceHandler<T, S::Service, B>;
@ -240,8 +243,9 @@ pub struct H1ServiceHandler<T, S, B> {
impl<T, S, B> H1ServiceHandler<T, S, B>
where
S: Service<Request = Request, Response = Response<B>> + Clone,
S: Service<Request = Request> + Clone,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
fn new(cfg: ServiceConfig, srv: S) -> H1ServiceHandler<T, S, B> {
@ -256,8 +260,9 @@ where
impl<T, S, B> Service for H1ServiceHandler<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request, Response = Response<B>> + Clone,
S: Service<Request = Request> + Clone,
S::Error: Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
type Request = T;

View file

@ -50,8 +50,9 @@ pub struct Dispatcher<T: AsyncRead + AsyncWrite, S: Service, B: MessageBody> {
impl<T, S, B> Dispatcher<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request<Payload>, Response = Response<B>> + 'static,
S: Service<Request = Request<Payload>> + 'static,
S::Error: Into<Error> + fmt::Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
pub fn new(
@ -91,8 +92,9 @@ where
impl<T, S, B> Future for Dispatcher<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request<Payload>, Response = Response<B>> + 'static,
S: Service<Request = Request<Payload>> + 'static,
S::Error: Into<Error> + fmt::Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
type Item = ();
@ -149,8 +151,9 @@ enum ServiceResponseState<S: Service, B> {
impl<S, B> ServiceResponse<S, B>
where
S: Service<Request = Request<Payload>, Response = Response<B>> + 'static,
S: Service<Request = Request<Payload>> + 'static,
S::Error: Into<Error> + fmt::Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
fn prepare_response(
@ -216,8 +219,9 @@ where
impl<S, B> Future for ServiceResponse<S, B>
where
S: Service<Request = Request<Payload>, Response = Response<B>> + 'static,
S: Service<Request = Request<Payload>> + 'static,
S::Error: Into<Error> + fmt::Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
type Item = ();
@ -228,7 +232,7 @@ where
ServiceResponseState::ServiceCall(ref mut call, ref mut send) => {
match call.poll() {
Ok(Async::Ready(res)) => {
let (res, body) = res.replace_body(());
let (res, body) = res.into().replace_body(());
let mut send = send.take().unwrap();
let mut length = body.length();

View file

@ -30,9 +30,10 @@ pub struct H2Service<T, S, B> {
impl<T, S, B> H2Service<T, S, B>
where
S: NewService<Request = Request<Payload>, Response = Response<B>> + Clone,
S: NewService<Request = Request<Payload>> + Clone,
S::Service: Clone + 'static,
S::Error: Into<Error> + Debug + 'static,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
/// Create new `HttpService` instance.
@ -55,9 +56,10 @@ where
impl<T, S, B> NewService for H2Service<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: NewService<Request = Request<Payload>, Response = Response<B>> + Clone,
S: NewService<Request = Request<Payload>> + Clone,
S::Service: Clone + 'static,
S::Error: Into<Error> + Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
type Request = T;
@ -235,8 +237,9 @@ pub struct H2ServiceResponse<T, S: NewService, B> {
impl<T, S, B> Future for H2ServiceResponse<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: NewService<Request = Request<Payload>, Response = Response<B>>,
S: NewService<Request = Request<Payload>>,
S::Service: Clone + 'static,
S::Response: Into<Response<B>>,
S::Error: Into<Error> + Debug,
B: MessageBody + 'static,
{
@ -261,8 +264,9 @@ pub struct H2ServiceHandler<T, S, B> {
impl<T, S, B> H2ServiceHandler<T, S, B>
where
S: Service<Request = Request<Payload>, Response = Response<B>> + Clone + 'static,
S: Service<Request = Request<Payload>> + Clone + 'static,
S::Error: Into<Error> + Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
fn new(cfg: ServiceConfig, srv: S) -> H2ServiceHandler<T, S, B> {
@ -277,8 +281,9 @@ where
impl<T, S, B> Service for H2ServiceHandler<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request<Payload>, Response = Response<B>> + Clone + 'static,
S: Service<Request = Request<Payload>> + Clone + 'static,
S::Error: Into<Error> + Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
type Request = T;
@ -312,8 +317,9 @@ enum State<T: AsyncRead + AsyncWrite, S: Service, B: MessageBody> {
pub struct H2ServiceHandlerResponse<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request<Payload>, Response = Response<B>> + Clone + 'static,
S: Service<Request = Request<Payload>> + Clone + 'static,
S::Error: Into<Error> + Debug,
S::Response: Into<Response<B>>,
B: MessageBody + 'static,
{
state: State<T, S, B>,
@ -322,8 +328,9 @@ where
impl<T, S, B> Future for H2ServiceHandlerResponse<T, S, B>
where
T: AsyncRead + AsyncWrite,
S: Service<Request = Request<Payload>, Response = Response<B>> + Clone,
S: Service<Request = Request<Payload>> + Clone,
S::Error: Into<Error> + Debug,
S::Response: Into<Response<B>>,
B: MessageBody,
{
type Item = ();