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}