fn call()

in dubbo/src/filter/service.rs [58:82]


    fn call(&mut self, req: http::Request<ReqBody>) -> Self::Future {
        let uri = req.uri().clone();
        let method = req.method().clone();
        let version = req.version();
        let (parts, msg) = req.into_parts();

        let res = self.f.call(Request::from_parts(
            Metadata::from_headers(parts.headers),
            (),
        ));
        match res {
            Ok(req) => {
                let (metadata, _) = req.into_parts();
                let req = Request::from_parts(Metadata::from_headers(metadata.into_headers()), msg);
                let http_req = req.into_http(uri, method, version);

                let resp = self.inner.call(http_req);
                Box::pin(resp)
            }
            Err(err) => {
                let fut = async move { Ok(err.to_http()) };
                Box::pin(fut)
            }
        }
    }