NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
chunked_reader.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_HTTP_CHUNKED_READER_HPP__
2#define NEFORCE_NETWORK_HTTP_CHUNKED_READER_HPP__
3
8
12NEFORCE_BEGIN_NAMESPACE__
13NEFORCE_BEGIN_HTTP__
14
19
38class chunked_body_reader {
39public:
43
44 explicit chunked_body_reader(tcp_socket& socket) :
45 socket_(&socket) {}
46
54
59 NEFORCE_NODISCARD const unordered_map<string, string>& trailers() const noexcept { return trailers_; }
60
64 NEFORCE_NODISCARD byte_size total_read() const noexcept { return total_read_; }
65
69 NEFORCE_NODISCARD bool is_complete() const noexcept { return complete_; }
70
71private:
73 tcp_socket* socket_;
75 byte_size total_read_{0};
77 bool complete_{false};
79 bool trailers_parsed_{false};
81 unordered_map<string, string> trailers_;
83 byte_vector buffer_;
84
85 bool read_line(string& line);
86 void parse_trailers();
87};
88 // HTTP
90
91NEFORCE_END_HTTP__
92NEFORCE_END_NAMESPACE__
93#endif // NEFORCE_NETWORK_HTTP_CHUNKED_READER_HPP__
字节大小表示和转换工具
HTTP Chunked Transfer Encoding 读取器
const unordered_map< string, string > & trailers() const noexcept
获取所有trailer头部
bool next_chunk(byte_vector &out)
读取下一个chunk
byte_size total_read() const noexcept
获取已读取的总体积
byte_size max_total_size
总请求体最大大小
byte_size max_chunk_size
单chunk最大大小
bool is_complete() const noexcept
检查是否已完成所有chunk的读取
vector< byte_t > byte_vector
字节向量类型别名
duration< int64_t, milli > milliseconds
毫秒持续时间
TCP Socket实现
无序映射容器