Trait HttpService

Source
pub trait HttpService<RequestBody>: Sealed<RequestBody> {
    type ResponseBody: Body;
    type Error;
    type Future: Future<Item = Response<Self::ResponseBody>, Error = Self::Error>;

    // Required methods
    fn poll_ready(&mut self) -> Poll<(), Self::Error>;
    fn call(&mut self, request: Request<RequestBody>) -> Self::Future;

    // Provided methods
    fn into_service(self) -> IntoService<Self>
       where Self: Sized { ... }
    fn as_service(&mut self) -> AsService<'_, Self>
       where Self: Sized { ... }
}
Expand description

An HTTP service

This is not intended to be implemented directly. Instead, it is a trait alias of sorts. Implements the tower_service::Service trait using http::Request and http::Response types.

Required Associated Types§

Source

type ResponseBody: Body

Response payload.

Source

type Error

Errors produced by the service.

Source

type Future: Future<Item = Response<Self::ResponseBody>, Error = Self::Error>

The future response value.

Required Methods§

Source

fn poll_ready(&mut self) -> Poll<(), Self::Error>

Returns Ready when the service is able to process requests.

Source

fn call(&mut self, request: Request<RequestBody>) -> Self::Future

Process the request and return the response asynchronously.

Provided Methods§

Source

fn into_service(self) -> IntoService<Self>
where Self: Sized,

Wrap the HttpService so that it implements tower_service::Service directly.

Since HttpService does not directly implement Service, if an HttpService instance needs to be used where a T: Service is required, it must be wrapped with a type that provides that implementation. IntoService does this.

Source

fn as_service(&mut self) -> AsService<'_, Self>
where Self: Sized,

Same as into_service but operates on an HttpService reference.

Implementors§

Source§

impl<T, B1, B2> HttpService<B1> for T
where T: Service<Request<B1>, Response = Response<B2>>, B2: Body,