Realm C++ SDK版本 v 2.2.0

websocket.hpp

1
2//
3// 版权所有 2024 Realm Inc.
4//
5// 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
6// 除非符合合规,否则不得使用此文件。
7// 您可以在以下网址获取许可证副本:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 除非适用法律要求或书面同意,否则软件
12// 根据许可证分发是按“原样”分发的,
13// 不提供任何类型的Express或暗示的保证或条件。
14// 请参阅管理权限的特定语言的许可证和
15// 许可证下的限制。
16//
18
19#ifndef CPPREALM_NETWORKING_WEBSOCKET_HPP
20#define CPPREALM_NETWORKING_WEBSOCKET_HPP
21
22#include <cpprealm/internal/bridge/status.hpp>
23#include <cpprealm/internal/bridge/realm.hpp>
24
25#ifndef REALMCXX_VERSION_MAJOR
26#include <cpprealm/version_numbers.hpp>
27#endif
28
29#include <chrono>
30#include<optional>
31
32命名空间域 {
33 namespace sync {
34 class SyncSocketProvider;
35 struct WebSocketInterface;
36 struct WebSocketObserver;
37 }
38
39 命名空间util {
40 class Logger;
41 }
42 }
43
44命名空间域::networking {
45
48 std::vector<std::string>协议
50 std::string URL
51 };
52
53 枚举 class websocket_err_codes {
54 ok = 1000,
55 go_away = 1001 ,
56 protocol_error = 1002,
57 unsupported_data = 1003 ,
58 websocket_reserved = 1004 ,
59 no_status_received = 1005 ,
60异常_闭包= 1006 ,
61 invalid_payload_data = 1007 ,
62 policy_violation = 1008 ,
63 message_too_big = 1009 ,
64 invalid_extension = 1010 ,
65 invalid_server_error = 1011,
66 TLS_handshake_failed = 1015 ,
67
68未经授权 = 4001 ,
69 forbidden = 4002,
70 move_permanently = 4003 ,
71 client_too_old = 4004 ,
72 client_too_new = 4005 ,
73 protocol_mismatch = 4006,
74
75 resolve_failed = 4400 ,
76 connection_failed = 4401 ,
77 read_error = 4402 ,
78 write_error = 4403 ,
79 retry_error = 4404,
80 fatal_error = 4405,
81 };
82
83 using status = :: 域::internal::bridge::status
84 struct websocket_interface;
85 struct websocket_observer;
86
113 public :
114
116 运用 FunctionHandler = std::function<void( status )>;
117
128 struct timer {
130 虚拟 ~timer () = 默认 ;
133 虚拟 void cancel () = 0 ;
134 };
135
137 运用 sync_timer = std::unique_ptr<sync_socket_provider::timer>;
138
142 虚拟 ~sync_socket_provider () = 默认 ;
143
149 virtual std::unique_ptr<websocket_interface> connect (std::unique_ptr<websocket_observer> Observer,
150 websocket_endpoint && endpoint) = 0 ;
151
174 虚拟 void post(FunctionHandler&& handler) = 0;
175
190 虚拟 sync_timer create_timer (std::chrono::milliseconds Delay, FunctionHandler && handler) = 0 ;
191 };
192
201 虚拟 ~websocket_interface() = default;
202
203 using FunctionHandler = std::function<void( status )>;
204
215 虚拟 void async_write_binary (std::string_view data, FunctionHandler&& handler) = 0 ;
216 };
217
221 虚拟 ~websocket_observer() = default;
222
229 虚拟 void websocket_connected_handler ( const std::string& 协议) = 0 ;
230
234 虚拟 void websocket_error_handler() = 0;
235
247 虚拟 bool websocket_binary_message_received (std::string_view data) = 0 ;
248
262 虚拟 bool websocket_close_handler ( bool was_clean, websocket_err_codes error_code,
263 std::string_view message) = 0;
264 };
265
268 struct 配置{
272 std::Optional<std::map<std::string, std::string>> custom_http_headers
276std::Optional<::realm::internal::bridge::realm::sync_config::proxy_config> proxy_config
277
278 using SSLVerifyCallback = bool( const std::string& server_address,
279 internal::bridge:: 域::sync_config::proxy_config::port_type server_port,
280 const char* pem_data, size_t pem_size, int preverify_ok, int depth);
288 std::Optional<std::string> ssl_trust_certificate_path
294 std::function<SSLVerifyCallback> ssl_verify_callback
295 };
298 ~default_socket_provider () = 默认 ;
299
300 std::unique_ptr<websocket_interface> connect (std::unique_ptr<websocket_observer>, websocket_endpoint &&) override ;
301 void 帖子 ( FunctionHandler &&) override ;
302 sync_timer create_timer (std::chrono::milliseconds Delay, FunctionHandler &&) override ;
303
304 protected
305 配置m_configuration;
306 private :
307 voidinitialize ();
308std::unique_ptr<::realm::sync::SyncSocketProvider> m_provider;
309 };
310 }
311
312#endif //CPREALM_NETWORKING_WEBSOCKET_HPP
定义: websocket.hpp: 112
virtual std::unique_ptr< websocket_interface > connect(std::unique_ptr< websocket_observer > Observer, websocket_endpoint &&endpoint)= 0
std::unique_ptr< sync_socket_provider::timer > sync_timer
其他类的 typedef。
定义: websocket.hpp: 137
std::function< void(status)> FunctionHandler
函数处理程序 typedef.
定义: websocket.hpp: 116
virtual sync_timer create_timer(std::chrono::milliseconds Delay, FunctionHandler &&handler)= 0
virtual void 帖子(FunctionHandler &&handler)= 0
定义: status.hpp: 63
bool client_validate_ssl
定义: websocket.hpp: 284
std::Optional<::realm::internal::bridge::realm::sync_config::proxy_config > proxy_config
定义: websocket.hpp: 276
std::function< SSLVerifyCallback > ssl_verify_callback
定义: websocket.hpp: 294
std::optional< std::map< std::string, std::string > > custom_http_headers
定义: websocket.hpp: 272
std::option< std::string > ssl_trust_certificate_path
定义: websocket.hpp: 288
内置 websocket提供商。
定义: websocket.hpp: 267
sync_timer create_timer(std::chrono::milliseconds延迟,FunctionHandler &&) 覆盖
定义: websocket.cpp: 84
void 帖子(FunctionHandler &&) 覆盖
定义: websocket.cpp: 78
std::unique_ptr < websocket_interface > connect(std::unique_ptr < websocket_observer >, websocket_endpoint &&) 覆盖
定义: websocket.cpp: 71
虚拟 ~timer()=默认
取消计时器并销毁计时器实例。
定义: websocket.hpp: 46
std::vector< std::string > 协议
一个或多个 Websocket 协议的数组。
定义: websocket.hpp: 48
std::string URL
要连接的 websocket URL。
定义: websocket.hpp: 50
定义: websocket.hpp: 198
virtual void async_write_binary(std::string_view data, FunctionHandler &&handler)= 0
定义: websocket.hpp: 220
virtual void websocket_error_handler()= 0
virtual void websocket_connected_handler(const std::string &protocol)= 0
virtual bool websocket_binary_message_received(std::string_view data)= 0
virtual bool websocket_close_handler(bool was_clean, websocket_err_codes error_code, std::string_view message)= 0