Realm C++ SDK Versão C++ v2.2.0

websocket.hpp

1
2//
3// Autores 2024 Realm Inc.
4//
5// Licenciado sob a Licença Apache, Versão 2.0 (a "Licença");
6// você não pode usar este arquivo, exceto em conformidade com a Licença.
7// Você pode obter uma cópia da Licença em
8//
9// http://www.apache.org/license/LICENSE-2.0
10//
11// A menos que exigido pela lei aplicável ou acordado por escrito, o software
12// distribuído sob a Licença é distribuído "Como está",
13// sem garantias ou condições de qualquer tipo, Express ou implícitas.
14// Consulte a Licença para obter as permissões específicas de domínio do idioma e
15// limitações da Licença.
16//
18
19#ifndef CPPREALM_NETWORKING_WEBSOCKET_HPP
20#define CPPREALM_NETWORKING_WEBSOCKET_HPP
21
22#include <cpprealm/internal/bridge/status.hpp>
23#include <cprealm/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
32namespace Realm {
33 namespace sync {
34 classe SyncSocketProvider;
35 struct WebSocketInterface;
36 struct WebSocketObserver;
37 }
38
39 namespace util {
40 registrador de classe ;
41 }
42}
43
44namespace Realm::network {
45
46 estrutura, estrutura websocket_endpoint {
48 <std::string> protocolos std::vector ;
50 std::string URL;
51 };
52
53 classe enumeração websocket_err_codes {
54 ok = 1000,
55 Going_Apartment = 1001,
56 protocol_error = 1002,
57 unsupported_data = 1003,
58 websocket_reserved = 1004,
59 no_status_received = 1005,
60 anormal_closure = 1006,
61 invalid_playload_data = 1007,
62 política_violação = 1008,
63 message_too_big = 1009,
64 extensão_inválida = 1010,
65 invalid_server_error = 1011,
66 TLS_handshake_failed = 1015,
67
68 não autorizado = 4001,
69 forbidden = 4002,
70 movido_permanente = 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 público:
114
116 Usando FunctionHandler = std::function <void(status)>;
117
128 estrutura, estrutura timer {
130 virtual ~timer() = padrão;
133 virtual vazio cancelar() = 0;
134 };
135
137 Usando sync_timer = std::unique_ptr<sync_socket_provider::timer>;
138
142 virtual ~sync_socket_provider() = padrão;
143
149 std virtual ::unique_ptr<websocket_interface> conecte(std::unique_ptr<websocket_observer> observador,
150 websocket_endpoint && endpoint) = 0;
151
174 virtual vazio post(FunctionHandler&& handler) = 0;
175
190 virtual sync_timer create_timer(std::chrono::atraso de milissegundos, FunctionHandler&& manipulador) = 0;
191 };
192
198 estrutura, estrutura websocket_interface {
201 virtual ~websocket_interface() = default;
202
203 usando FunctionHandler = std::function <void(status)>;
204
215 virtual vazio async_write_binary(std::string_view data, FunctionHandler&& handler) = 0;
216 };
217
220 estrutura, estrutura websocket_observer {
221 virtual ~websocket_observer() = default;
222
229 virtual vazio websocket_connected_handler(const std::string& protocol) = 0;
230
234 virtual vazio websocket_error_handler() = 0;
235
247 virtual bool websocket_binary_message_received(std::string_view data) = 0;
248
262 virtual bool websocket_closed_handler(bool foi_clean, websocket_err_codes error_code,
263 std::string_view message) = 0;
264 };
265
267 estrutura, estrutura default_socket_provider : sync_socket_provider público {
268 estrutura, estrutura configuração {
272 std::optional<std::map<std::string, std::string>> custom_http_headers;
276 std::opcional<::realm::internal::bridge::realm::sync_config::proxy_config> proxy_config;
277
278 usando SSLVerifyCallback = bool(const std::string& server_address,
279 internal::bridge:: Realm::sync_config::proxy_config::port_type server_port,
280 const char* pem_data, size_t pem_size, int preverify_ok, int depth);
288 std::opcional<std::string> ssl_rust_certificate_path;
294 std::function<SSLVerifyCallback> ssl_verify_callback;
295 };
297 default_socket_provider(configuração const & c);
298 ~default_socket_provider() = padrão;
299
300 std::unique_ptr<websocket_interface> connect(std::unique_ptr<websocket_observer>, websocket_endpoint &&) substitua;
301 vazio post(FunctionHandler&&) override;
302 sync_timer create_timer(std::chrono::milliseconds delay, FunctionHandler&&) override;
303
304 protegido:
305 configuração m_configuration;
306 privado:
307 initialize() nulo ;
308 std::unique_ptr<::realm::sync::SyncSocketProvider> m_provider;
309 };
310}
311
312#endif //CPPrealm_NETWORKING_WEBSOCKET_HPP
Definição: websocket.hpp:112
virtual std::unique_ptr< websocket_interface > connect(std::unique_ptr< websocket_observer > observador, websocket_endpoint &&endpoint)=0
std::unique_ptr< sync_socket_provider::timer > sync_timer
Outros typedefs de classe .
Definição: websocket.hpp:137
std::function< void(status)> FunctionHandler
Typedef do manipulador de função.
Definição: websocket.hpp:116
virtual sync_timer create_timer(std::chrono::milliseconds delay, FunctionHandler &&handler)=0
postagem vazia virtual(FunctionHandler &&handler)=0
Definição: status.hpp:63
bool client_validate_ssl
Definição: websocket.hpp:284
std::opcional<::realm::internal::bridge::realm::sync_config::proxy_config > proxy_config
Definição: websocket.hpp:276
std::function< SSLVerifyCallback > ssl_verify_callback
Definição: websocket.hpp:294
std::optional< std::map< std::string, std::string > > custom_http_headers
Definição: websocket.hpp:272
std::opcional< std::string > ssl_rust_certificate_path
Definição: websocket.hpp:288
Construído no provedor de websocket.
Definição: websocket.hpp:267
sync_timer create_timer(std::chrono::milliseconds delay, FunctionHandler &&) override
Definição: websocket.cpp:84
postagem vazia(FunctionHandler &&) substituição
Definição: websocket.cpp:78
std::unique_ptr< websocket_interface > connect(std::unique_ptr< websocket_observer >, websocket_endpoint &&) override
Definição: websocket.cpp:71
Definição: websocket.hpp:128
virtual ~timer()=default
Cancela o temporizador e destrói a instância do temporizador.
Definição: websocket.hpp:46
std::vector< std::string > protocolos
Array de um ou mais protocolos de websocket.
Definição: websocket.hpp:48
std::string URL
O URL do websocket ao qual se conectar.
Definição: websocket.hpp:50
Definição: websocket.hpp:198
virtual ~websocket_interface()=default
virtual null async_write_binary(std::string_view data, FunctionHandler &&handler)=0
Definição: websocket.hpp:220
virtual null websocket_connected_handler(const std::string &protocol)=0
virtual bool websocket_binary_message_received(std::string_view data)=0
bool virtual websocket_closed_handler(bool foi_clean, websocket_err_codes error_code, std::string_view message)=0