cxmr_util_servers/
router.rs1use std::task::{Context, Poll};
4
5use futures_util::future;
6use hyper::{service::Service, Body, Request};
7
8pub struct RouterService<T>
10where
11 T: Service<Request<Body>> + Clone,
12{
13 inner: T,
14}
15
16impl<T: Service<Request<Body>> + Clone> RouterService<T> {
17 pub fn new(inner: T) -> RouterService<T> {
19 RouterService { inner }
20 }
21}
22
23impl<I, T> Service<T> for RouterService<I>
24where
25 I: Service<Request<Body>> + Clone,
26{
27 type Response = I;
28 type Error = std::io::Error;
29 type Future = future::Ready<Result<Self::Response, Self::Error>>;
30
31 fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
32 Ok(()).into()
33 }
34
35 fn call(&mut self, _: T) -> Self::Future {
36 future::ok(self.inner.clone())
37 }
38}