tonic/
body.rs

1//! HTTP specific body utilities.
2
3use http_body_util::BodyExt;
4
5/// A type erased HTTP body used for tonic services.
6pub type BoxBody = http_body_util::combinators::UnsyncBoxBody<bytes::Bytes, crate::Status>;
7
8/// Convert a [`http_body::Body`] into a [`BoxBody`].
9pub fn boxed<B>(body: B) -> BoxBody
10where
11    B: http_body::Body<Data = bytes::Bytes> + Send + 'static,
12    B::Error: Into<crate::Error>,
13{
14    body.map_err(crate::Status::map_error).boxed_unsync()
15}
16
17/// Create an empty `BoxBody`
18pub fn empty_body() -> BoxBody {
19    http_body_util::Empty::new()
20        .map_err(|err| match err {})
21        .boxed_unsync()
22}