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)
}
}
}