NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
websocket_deflate.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_HTTP_WEBSOCKET_DEFLATE_HPP__
2#define NEFORCE_NETWORK_HTTP_WEBSOCKET_DEFLATE_HPP__
3
11
13#ifdef NEFORCE_SUPPORT_ZLIB
15#endif
16NEFORCE_BEGIN_NAMESPACE__
17NEFORCE_BEGIN_HTTP__
18
23
30struct NEFORCE_API websocket_deflate_config {
33
36
39
42
44 bool active = false;
45
52
57 NEFORCE_NODISCARD string to_response_header() const;
58};
59
60#ifdef NEFORCE_SUPPORT_ZLIB
61
72class NEFORCE_API websocket_deflate {
73private:
75 bool compress_mode_;
77 int window_bits_;
79 bool no_context_takeover_;
81 bool initialized_ = false;
83 bool stream_finished_ = false;
84
87
88 void ensure_initialized();
89
90public:
97 websocket_deflate(bool compress, int window_bits, bool no_context_takeover);
98
99 ~websocket_deflate() = default;
100
101 websocket_deflate(const websocket_deflate&) = delete;
102 websocket_deflate& operator=(const websocket_deflate&) = delete;
104 websocket_deflate& operator=(websocket_deflate&&) noexcept;
105
113
118};
119
120#else // !NEFORCE_SUPPORT_ZLIB
121
129class websocket_deflate {
130public:
131 websocket_deflate(bool, int, bool) {}
132 ~websocket_deflate() = default;
133 websocket_deflate(const websocket_deflate&) = delete;
134 websocket_deflate& operator=(const websocket_deflate&) = delete;
136 websocket_deflate& operator=(websocket_deflate&&) noexcept { return *this; }
137
139 string process(string_view data, bool) { return {data}; }
140
142 void reset_context() {}
143};
144
145#endif // NEFORCE_SUPPORT_ZLIB
146 // HTTP
148
149NEFORCE_END_HTTP__
150NEFORCE_END_NAMESPACE__
151#endif // NEFORCE_NETWORK_HTTP_WEBSOCKET_DEFLATE_HPP__
string process(string_view data, bool is_final)
处理消息(压缩或解压)
websocket_deflate(bool compress, int window_bits, bool no_context_takeover)
构造压缩/解压器
void reset_context()
重置上下文(新消息开始时调用)
独占智能指针
basic_string_view< char > string_view
字符字符串视图
constexpr decltype(auto) data(Container &cont) noexcept(noexcept(cont.data()))
获取容器的底层数据指针
字符串类型别名和实用函数
bool server_no_context_takeover
服务端是否禁用上下文接管(逐消息重置压缩器)
static websocket_deflate_config negotiate(string_view request_extensions)
从请求的 Sec-WebSocket-Extensions 头部解析并协商
bool client_no_context_takeover
客户端是否禁用上下文接管(逐消息重置压缩器)
bool active
是否有有效的协商配置
int client_max_window_bits
客户端→服务端压缩窗口比特位 (8-15),默认15
string to_response_header() const
生成服务端响应头部值
int server_max_window_bits
服务端→客户端压缩窗口比特位 (8-15),默认15
判断类型是否被final限定
ZLib压缩解压缩工具