1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-06-11 17:59:35 +00:00

improve body size docs

This commit is contained in:
Rob Ede 2021-02-15 11:24:46 +00:00
parent 68d1bd88b1
commit 0404b78b54
No known key found for this signature in database
GPG key ID: C2A3B36E841A91E6
3 changed files with 28 additions and 0 deletions

View file

@ -15,13 +15,39 @@ use crate::error::Error;
/// Body size hint.
#[derive(Debug, PartialEq, Copy, Clone)]
pub enum BodySize {
/// Absence of body can be assumed from method or status code.
///
/// Will skip writing Content-Length header.
None,
/// Zero size body.
///
/// Will write `Content-Length: 0` header.
Empty,
/// Known size body.
///
/// Will write `Content-Length: N` header. `Sized(0)` is treated the same as `Empty`.
Sized(u64),
/// Unknown size body.
///
/// Will not write Content-Length header. Can be used with chunked Transfer-Encoding.
Stream,
}
impl BodySize {
/// Returns true if size hint indicates no or empty body.
///
/// ```
/// # use actix_http::body::BodySize;
/// assert!(BodySize::None.is_eof());
/// assert!(BodySize::Empty.is_eof());
/// assert!(BodySize::Sized(0).is_eof());
///
/// assert!(!BodySize::Sized(64).is_eof());
/// assert!(!BodySize::Stream.is_eof());
/// ```
pub fn is_eof(&self) -> bool {
matches!(self, BodySize::None | BodySize::Empty | BodySize::Sized(0))
}

View file

@ -36,6 +36,7 @@ where
B: MessageBody,
{
trace!("Sending client request: {:?} {:?}", head, body.size());
let head_req = head.as_ref().method == Method::HEAD;
let length = body.size();
let eof = matches!(

View file

@ -78,6 +78,7 @@ impl<B: MessageBody> Encoder<B> {
});
}
}
ResponseBody::Body(Encoder {
body,
eof: false,