1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use client::RecvMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Mode {
Buffered(usize),
Progressive(usize),
}
impl RecvMode {
/// Download whole message body (request or response) into the memory.
///
/// The argument is maximum size of the body. The Buffered variant
/// works equally well for Chunked encoding and for read-util-end-of-stream
/// mode of HTTP/1.0, so sometimes you can't know the size of the request
/// in advance. Note this is just an upper limit it's neither buffer size
/// nor *minimum* size of the body.
///
/// Note the buffer size is asserted on if it's bigger than max buffer size
pub fn buffered(maximum_size_of_body: usize) -> RecvMode {
RecvMode {
mode: Mode::Buffered(maximum_size_of_body),
}
}
/// Fetch data chunk-by-chunk.
///
/// The parameter denotes minimum number of bytes that may be passed
/// to the protocol handler. This is for performance tuning (i.e. less
/// wake-ups of protocol parser). But it's not an input buffer size. The
/// use of `Progressive(1)` is perfectly okay (for example if you use http
/// request body as a persistent connection for sending multiple messages
/// on-demand)
pub fn progressive(min_bytes_hint: usize) -> RecvMode {
RecvMode {
mode: Mode::Progressive(min_bytes_hint),
}
}
}