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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! HTTP request body handling implementation.
//!
//! This module provides the core abstractions and implementations for handling HTTP request bodies
//! in an efficient streaming manner. The design focuses on:
//!
//! - Memory efficiency through streaming
//! - Protocol correctness
//! - Clean abstraction boundaries
//! - Concurrent processing capabilities
//!
//! # Architecture
//!
//! The body handling system consists of two main components:
//!
//! - [`ReqBody`]: The consumer side that implements `http_body::Body` trait
//! - [`ReqBodySender`]: The producer side that reads from the raw payload stream
//!
//! These components communicate through channels to enable concurrent processing while
//! maintaining backpressure.
//!
//! # Design Goals
//!
//! 1. **Memory Efficiency**
//! - Stream body chunks instead of buffering entire payload
//! - Implement backpressure to prevent overwhelming memory
//!
//! 2. **Protocol Correctness**
//! - Ensure complete body consumption even if handler abandons reading
//! - Maintain proper connection state for keep-alive support
//!
//! 3. **Concurrent Processing**
//! - Allow request handling to proceed while body streams
//! - Support cancellation and cleanup in error cases
//!
//! 4. **Clean Abstractions**
//! - Hide channel complexity from consumers
//! - Provide standard http_body::Body interface
//!
//! # Implementation Details
//!
//! The body handling implementation uses:
//!
//! - MPSC channel for signaling between consumer and producer
//! - Oneshot channels for individual chunk transfers
//! - EOF tracking to ensure complete body consumption
//! - Automatic cleanup of unread data
//!
//! See individual component documentation for more details.
//mod req_body_2;
pub use ReqBody;