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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//! Core HTTP protocol abstractions and implementations.
//!
//! This module provides the fundamental building blocks for HTTP protocol handling,
//! including request/response processing, body streaming, and error handling.
//! The design focuses on providing clean abstractions while maintaining high performance
//! and memory efficiency.
//!
//! # Architecture
//!
//! The protocol module is organized into several key components:
//!
//! - **Message Handling** ([`message`]): Core message types and payload processing
//! - [`Message`]: Represents either headers or payload chunks
//! - [`PayloadItem`]: Handles individual payload chunks and EOF
//! - [`PayloadSize`]: Tracks payload size information
//!
//! - **Request Processing** ([`request`]): Request header handling
//! - [`RequestHeader`]: Wraps HTTP request headers with additional functionality
//!
//! - **Response Processing** ([`response`]): Response header handling
//! - [`ResponseHead`]: Type alias for response headers before body attachment
//!
//! - **Body Streaming** ([`body`]): Efficient body handling implementation
//! - [`ReqBody`]: Consumer side implementing `http_body::Body`
//! - [`ReqBodySender`]: Producer side for streaming body chunks
//!
//! - **Error Handling** ([`error`]): Comprehensive error types
//! - [`HttpError`]: Top-level error type
//! - [`ParseError`]: Request parsing errors
//! - [`SendError`]: Response sending errors
//!
//! # Design Goals
//!
//! 1. **Memory Efficiency**
//! - Stream request/response bodies instead of buffering
//! - Implement proper backpressure mechanisms
//!
//! 2. **Clean Abstractions**
//! - Provide intuitive interfaces for protocol handling
//! - Hide implementation complexity from consumers
//!
//! 3. **Protocol Correctness**
//! - Ensure proper HTTP protocol compliance
//! - Handle edge cases and error conditions gracefully
//!
//! 4. **Performance**
//! - Minimize allocations and copies
//! - Support concurrent processing where beneficial
//!
//! # Example Usage
//!
//! The protocol module is typically used through the connection layer rather than
//! directly. However, understanding its components is crucial for implementing
//! custom handlers or extending functionality.
//!
//! See individual module documentation for specific usage examples.
pub use Message;
pub use PayloadItem;
pub use PayloadSize;
pub use RequestHeader;
pub use ResponseHead;
pub use HttpError;
pub use ParseError;
pub use SendError;