Realm C++ SDK 버전 v2.2.0

websocket.hpp

1
2//
3//저작권 2024 Realm Inc.
4//
5// Apache 라이선스, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다.
6// 라이선스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
7// 다음에서 라이선스 사본을 얻을 수 있습니다.
8//
9// http://www.apache.org/licences/LICENSE-2.0
10//
11// 관련 법률에서 요구하거나 문서로 동의하지 않는 한, 소프트웨어
12// 라이선스에 따라 배포되는 것은 '있는 그대로' 배포됩니다,
13// Express 묵시적이든 어떤 종류의 보증이나 조건도 제공하지 않습니다.
14// 권한을 관리하는 특정 언어에 대한 내용은 라이선스를 참조하세요.
15// 라이선스에 따른 제한 사항.
16//
18
19#ifndef CPPREALM_NETWORKING_WEBSOCKET_HPP
20#define CPPRALM_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 클래스 SyncSocketProvider;
35 struct WebSocketInterface;
36 struct WebSocketObserver;
37 }
38
39 네임스페이스 유틸리티 {
40 클래스 로거(Logger);
41 }
42}
43
44네임스페이스 영역::네트워킹 {
45
48 std::vector<std::string> 프로토콜;
50 std::string URL;
51 };
52
53 열거형 클래스 websocket_err_codes {
54 ok = 1000,
55 going_ways = 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 정책 위반 = 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 moved_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
84 struct websocket_interface;
85 struct websocket_observer;
86
113 public:
114
116 사용 FunctionHandler = std::function< 무효(status)>;
117
128 구조체 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 가상 std::unique_ptr<websocket_interface> connect(std::unique_ptr<websocket_observer> 관찰자,
150 websocket_endpoint && endpoint) = 0;
151
174 가상 void post(FunctionHandler&& handler) = 0;
175
190 가상 sync_timer create_timer(std::chrono::milliseconds 지연, FunctionHandler&& 처리기) = 0;
191 };
192
201 가상 ~websocket_interface() = default;
202
203 using FunctionHandler = std::function<oid(status)>;
204
215 가상 void async_write_binary(std::string_view 데이터, FunctionHandler&& 처리기) = 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 가상 부울 websocket_binary_message_received(std::string_view 데이터) = 0;
248
262 가상 부울 websocket_closed_handler(bool was_clean, websocket_err_codes error_code,
263 std::string_view message) = 0;
264 };
265
268 구조체 구성 {
272 std::optional<std::map<std::string, std::string>> custom_http_headers;
276 std::optional<::realm::internal::bridge::realm::sync_config::proxy_config> proxy_config;
277
278 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);
284 부울 client_validate_ssl = true;
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 &&) 재정 의 ;
301 void 게시(FunctionHandler&&) 재정 의 ;
302 sync_timer create_timer(std::chrono::milliseconds 지연, FunctionHandler&&) 재정 의 ;
303
304 보호됨:
305 구성 m_configuration;
306 private:
307 무효 initialize();
308 std::unique_ptr<::realm::sync::SyncSocketProvider> m_provider;
309 };
310}
311
312#endif //CPPREALM_NETWORKING_WEBSOCKET_HPP
가상 std::unique_ptr< websocket_interface > connect(std::unique_ptr< websocket_observer > 관찰자, websocket_endpoint &&endpoint)=0
가상 ~sync_socket_provider()= 기본값
std::unique_ptr< sync_socket_provider::timer > sync_timer
기타 클래스 typedef.
정의: websocket.hpp:137
std::function< void(status)> FunctionHandler
함수 핸들러 typedef.
정의: websocket.hpp:116
가상 sync_timer create_timer(std::chrono::milliseconds delay, FunctionHandler &&handler)=0
가상 무효 게시(FunctionHandler &&handler)=0
정의: status.hpp:63
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::optional< std::string > ssl_ Trust_certificate_path
정의: websocket.hpp:288
내장 웹 소켓 제공자.
정의: websocket.hpp:267
sync_timer create_timer(std::chrono::milliseconds delay, FunctionHandler &&) 재정의
정의: websocket.cpp:84
무효 게시(FunctionHandler &&) 재정의
정의: websocket.cpp:78
std::unique_ptr< websocket_interface > connect(std::unique_ptr< websocket_observer >, websocket_endpoint &&) 재정의
정의: websocket.cpp:71
가상 ~timer()= 기본값
타이머를 취소하고 타이머 인스턴스 를 삭제합니다.
std::vector< std::string > 프로토콜
하나 이상의 웹 소켓 프로토콜 배열입니다.
정의: websocket.hpp:48
std::string URL
연결할 웹 소켓 URL입니다.
정의: websocket.hpp:50
가상 ~websocket_interface()= 기본값
가상 무효 async_write_binary(std::string_view 데이터, FunctionHandler &&handler)=0
정의: websocket.hpp:220
가상 무효 websocket_connected_handler(const std::string &protocol)=0
가상 부울 websocket_binary_message_received(std::string_view 데이터)=0
가상 bool websocket_closed_handler(bool was_clean, websocket_err_codes error_code, std::string_view message)=0