LeviLamina
Loading...
Searching...
No Matches
SignalingService.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/application/AppPlatformListener.h"
7#include "mc/deps/core/http/PersistentWebSocket.h"
8#include "mc/deps/core/threading/Async.h"
9#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
11#include "mc/deps/nether_net/ESessionError.h"
12#include "mc/deps/nether_net/ISignalingInterface.h"
13#include "mc/network/services/signaling/ISignalingJsonRpcInterop.h"
14#include "mc/platform/ErrorInfo.h"
15#include "mc/platform/Result.h"
16
17// auto generated forward declare list
18// clang-format off
22class MessageTracker;
23class Scheduler;
24class WorkerPool;
25namespace Bedrock::Http { class HeaderCollection; }
26namespace Bedrock::Http { class RetryPolicy; }
27namespace Bedrock::Http { struct Url; }
28namespace Bedrock::PubSub { class Subscription; }
29namespace Json { class Value; }
30namespace NetherNet { struct ISignalingEventHandler; }
31namespace NetherNet { struct NetworkID; }
32namespace NetherNet { struct StunRelayServer; }
33namespace PlayerMessaging { struct NetworkID; }
34namespace PlayerMessaging { struct SigninID; }
35// clang-format on
36
37class SignalingService : public ::Bedrock::EnableNonOwnerReferences,
38 public ::std::enable_shared_from_this<::SignalingService> {
39public:
40 // SignalingService inner types declare
41 // clang-format off
42 class Connection;
43 class Channel;
47 class JsonRpcInterop;
48 // clang-format on
49
50 // SignalingService inner types define
51 enum class ConnectionStatus : uchar {
52 Connected = 0,
53 Disconnected = 1,
54 };
55
56 enum class SignInError : int {
57 Ok = 0,
58 EmptyAuthFromDiscovery = 100,
59 EmptyUrlFromDiscovery = 101,
60 ExpiredAuthFromDiscovery = 102,
61 };
62
64 public:
65 // Connection inner types define
66 enum class ServiceError : int {
67 UnknownError = 0,
68 PlayerUnreachable = 1,
69 MessageDeliveryFailed = 2,
70 TurnAuthFailed = 3,
71 FallbackToBestEffortDelivery = 4,
72 };
73
74 public:
75 // member variables
76 // NOLINTBEGIN
88 // NOLINTEND
89
90 public:
91 // prevent constructor by default
92 Connection& operator=(Connection const&);
93 Connection(Connection const&);
94 Connection();
95
96 public:
97 // virtual functions
98 // NOLINTBEGIN
99 virtual ~Connection() /*override*/;
100
101 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
102
103 virtual bool shouldReconnect() const /*override*/;
104
105 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
106
107 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() /*override*/;
108
109 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() /*override*/;
110
111 virtual void onConnect() /*override*/;
112
113 virtual void onDisconnect(bool, uint closeStatus) /*override*/;
114
115 virtual void _requestTurnConfig() const;
116
117 virtual void _sendPing() const;
118
119 virtual void onAppSuspended() /*override*/;
120
121 virtual void onAppResumed() /*override*/;
122 // NOLINTEND
123
124 public:
125 // member functions
126 // NOLINTBEGIN
129 ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider> serviceConfigProvider,
130 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
131 bool useJsonRpc
132 );
133
134 MCNAPI void _parseError(::std::string const& message, ::std::string messageId);
135
136 MCNAPI ::Bedrock::Result<::std::vector<::NetherNet::StunRelayServer>, ::NetherNet::ESessionError>
138
140 ::NetherNet::ESessionError result,
141 ::std::vector<::NetherNet::StunRelayServer> const& config
142 );
143
144 MCNAPI ::Bedrock::Threading::Async<::std::error_code> connect();
145
147
148 MCNAPI void parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
149
150 MCNAPI void parseTurnConfig(::std::string const& bodyText);
151
152 MCNAPI void parseTurnConfig(::Json::Value const& config);
153
154 MCNAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError>
155 sendTo(::NetherNet::NetworkID to, ::std::string const& message);
156 // NOLINTEND
157
158 public:
159 // constructor thunks
160 // NOLINTBEGIN
161 MCNAPI void* $ctor(
163 ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider> serviceConfigProvider,
164 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
165 bool useJsonRpc
166 );
167 // NOLINTEND
168
169 public:
170 // destructor thunk
171 // NOLINTBEGIN
172 MCNAPI void $dtor();
173 // NOLINTEND
174
175 public:
176 // virtual function thunks
177 // NOLINTBEGIN
178 MCNAPI void $onMessage(::std::string_view incomingMessage);
179
180 MCNAPI bool $shouldReconnect() const;
181
182 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
183
184 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> $getHeaders();
185
186 MCNAPI ::Bedrock::Http::RetryPolicy $getReconnectPolicy();
187
188 MCNAPI void $onConnect();
189
190 MCNAPI void $onDisconnect(bool, uint closeStatus);
191
192 MCNAPI void $_requestTurnConfig() const;
193
194 MCNAPI void $_sendPing() const;
195
196 MCNAPI void $onAppSuspended();
197
198 MCNAPI void $onAppResumed();
199
200
201 // NOLINTEND
202
203 public:
204 // vftables
205 // NOLINTBEGIN
206 MCNAPI static void** $vftableForPersistentWebSocket();
207
208 MCNAPI static void** $vftableForAppPlatformListener();
209 // NOLINTEND
210 };
211
212 class Channel : public ::NetherNet::ISignalingInterface {
213 public:
214 // member variables
215 // NOLINTBEGIN
220 // NOLINTEND
221
222 public:
223 // prevent constructor by default
224 Channel& operator=(Channel const&);
225 Channel(Channel const&);
226 Channel();
227
228 public:
229 // virtual functions
230 // NOLINTBEGIN
231 virtual ~Channel() /*override*/ = default;
232
233 virtual void SendSignal(
235 ::std::string const& message,
236 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
237 ) /*override*/;
238
239 virtual ::Bedrock::PubSub::Subscription
240 RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler) /*override*/;
241 // NOLINTEND
242
243 public:
244 // member functions
245 // NOLINTBEGIN
247 ::NetherNet::NetworkID networkIDTo,
248 ::std::string const& message,
249 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
250 );
251 // NOLINTEND
252
253 public:
254 // virtual function thunks
255 // NOLINTBEGIN
256 MCNAPI void $SendSignal(
258 ::std::string const& message,
259 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
260 );
261
262 MCNAPI ::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler);
263
264
265 // NOLINTEND
266
267 public:
268 // vftables
269 // NOLINTBEGIN
270 MCNAPI static void** $vftable();
271 // NOLINTEND
272 };
273
275
277
278 class JsonRpcConnection : public ::SignalingService::Connection {
279 public:
280 // member variables
281 // NOLINTBEGIN
284 // NOLINTEND
285
286 public:
287 // prevent constructor by default
288 JsonRpcConnection& operator=(JsonRpcConnection const&);
289 JsonRpcConnection(JsonRpcConnection const&);
290 JsonRpcConnection();
291
292 public:
293 // virtual functions
294 // NOLINTBEGIN
295 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
296
297 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
298
299 virtual void onConnect() /*override*/;
300
301 virtual ~JsonRpcConnection() /*override*/ = default;
302
303 virtual void _sendPing() const /*override*/;
304
305 virtual void _requestTurnConfig() const /*override*/;
306 // NOLINTEND
307
308 public:
309 // member functions
310 // NOLINTBEGIN
311 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
312 sendJsonRpc(::std::string const& message);
313
314 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> sendJsonRpcTo(
316 ::std::optional<::std::string> const& messageId,
317 ::std::string const& message
318 );
319 // NOLINTEND
320
321 public:
322 // virtual function thunks
323 // NOLINTBEGIN
324 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
325
326 MCNAPI void $onMessage(::std::string_view incomingMessage);
327
328 MCNAPI void $onConnect();
329
330 MCNAPI void $_sendPing() const;
331
332 MCNAPI void $_requestTurnConfig() const;
333
334
335 // NOLINTEND
336
337 public:
338 // vftables
339 // NOLINTBEGIN
340 MCNAPI static void** $vftableForPersistentWebSocket();
341
342 MCNAPI static void** $vftableForAppPlatformListener();
343 // NOLINTEND
344 };
345
346 class JsonRpcInterop : public ::ISignalingJsonRpcInterop {
347 public:
348 // member variables
349 // NOLINTBEGIN
351 // NOLINTEND
352
353 public:
354 // prevent constructor by default
355 JsonRpcInterop& operator=(JsonRpcInterop const&);
356 JsonRpcInterop(JsonRpcInterop const&);
357 JsonRpcInterop();
358
359 public:
360 // virtual functions
361 // NOLINTBEGIN
362 virtual ~JsonRpcInterop() /*override*/ = default;
363
364 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> sendJsonRpcTo(
366 ::std::optional<::std::string> const& messageId,
367 ::std::string const& message
368 ) const /*override*/;
369
370 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
371 sendJsonRpc(::std::string const& message) const /*override*/;
372
373 virtual ::std::shared_ptr<::MessageTracker> getMessageTracker() /*override*/;
374
375 virtual void
376 parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId) /*override*/;
377
378 virtual void parseTurnConfig(::Json::Value const& config) /*override*/;
379
380 virtual void setTurnConfig(
381 ::std::vector<::NetherNet::StunRelayServer>&& config,
382 ::std::chrono::steady_clock::time_point expiration
383 ) /*override*/;
384
385 virtual void onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError> const& error) /*override*/;
386 // NOLINTEND
387
388 public:
389 // virtual function thunks
390 // NOLINTBEGIN
391 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> $sendJsonRpcTo(
393 ::std::optional<::std::string> const& messageId,
394 ::std::string const& message
395 ) const;
396
397 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
398 $sendJsonRpc(::std::string const& message) const;
399
400 MCNAPI ::std::shared_ptr<::MessageTracker> $getMessageTracker();
401
402 MCNAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
403
404 MCNAPI void $parseTurnConfig(::Json::Value const& config);
405
406 MCNAPI void $setTurnConfig(
407 ::std::vector<::NetherNet::StunRelayServer>&& config,
408 ::std::chrono::steady_clock::time_point expiration
409 );
410
412
413
414 // NOLINTEND
415
416 public:
417 // vftables
418 // NOLINTBEGIN
419 MCNAPI static void** $vftable();
420 // NOLINTEND
421 };
422
423public:
424 // member variables
425 // NOLINTBEGIN
438 // NOLINTEND
439
440public:
441 // prevent constructor by default
442 SignalingService& operator=(SignalingService const&);
443 SignalingService(SignalingService const&);
444 SignalingService();
445
446public:
447 // virtual functions
448 // NOLINTBEGIN
449 virtual ~SignalingService() /*override*/;
450 // NOLINTEND
451
452public:
453 // member functions
454 // NOLINTBEGIN
456 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
457 ::WorkerPool& pool,
458 ::Scheduler& scheduler
459 );
460
461 MCNAPI ::std::shared_ptr<::SignalingService::Connection> _makeConnection(::PlayerMessaging::SigninID id);
462
463 MCNAPI ::Bedrock::Threading::Async<::std::vector<::NetherNet::StunRelayServer>> getRelayConfig() const;
464
465 MCNAPI_C ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry() const;
466
467 MCNAPI ::Bedrock::Threading::Async<::std::error_code> signIn(::PlayerMessaging::SigninID localId);
468
469 MCNAPI void update();
470 // NOLINTEND
471
472public:
473 // constructor thunks
474 // NOLINTBEGIN
475 MCNAPI void*
476 $ctor(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing, ::WorkerPool& pool, ::Scheduler& scheduler);
477 // NOLINTEND
478
479public:
480 // destructor thunk
481 // NOLINTBEGIN
482 MCNAPI void $dtor();
483 // NOLINTEND
484
485public:
486 // vftables
487 // NOLINTBEGIN
488 MCNAPI static void** $vftable();
489 // NOLINTEND
490};
Definition AppPlatformListener.h:15
Definition EnableNonOwnerReferences.h:7
Definition HeaderCollection.h:7
Definition PersistentWebSocket.h:20
Definition RetryPolicy.h:12
Definition Subscription.h:10
Definition IMinecraftEventing.h:137
Definition ISignalingJsonRpcInterop.h:20
Definition ISignalingServiceConfigProvider.h:14
Definition ISignalingServiceTelemetry.h:14
Definition Value.h:16
Definition MessageTracker.h:18
Definition ISignalingInterface.h:17
Definition Scheduler.h:14
Definition SignalingService.h:212
MCAPI void _SendJsonRpcSignal(::NetherNet::NetworkID networkIDTo, ::std::string const &message, ::std::function< void(::NetherNet::ESessionError)> &&onComplete)
MCAPI void $SendSignal(::NetherNet::NetworkID to, ::std::string const &message, ::std::function< void(::NetherNet::ESessionError)> &&onComplete)
MCAPI::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler *handler)
static MCAPI void ** $vftable()
Definition SignalingService.h:63
MCAPI void * $ctor(::PlayerMessaging::SigninID id, ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider > serviceConfigProvider, ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, bool useJsonRpc)
MCAPI void _parseError(::std::string const &message, ::std::string messageId)
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url > $getUrl()
MCAPI ::Bedrock::Result<::std::vector<::NetherNet::StunRelayServer >, ::NetherNet::ESessionError > _parseTurnConfig(::Json::Value const &config)
MCAPI void parseTurnConfig(::std::string const &bodyText)
static MCAPI void ** $vftableForAppPlatformListener()
MCAPI void _sendTurnConfigTelemetry(::NetherNet::ESessionError result, ::std::vector<::NetherNet::StunRelayServer > const &config)
static MCAPI void ** $vftableForPersistentWebSocket()
MCAPI void onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $onDisconnect(bool, uint closeStatus)
MCAPI::Bedrock::Http::RetryPolicy $getReconnectPolicy()
MCAPI bool $shouldReconnect() const
MCAPI void parseTurnConfig(::Json::Value const &config)
MCAPI void $_sendPing() const
MCAPI ::Bedrock::Threading::Async<::std::error_code > connect()
MCAPI Connection(::PlayerMessaging::SigninID id, ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider > serviceConfigProvider, ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, bool useJsonRpc)
MCAPI void $_requestTurnConfig() const
MCAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError > sendTo(::NetherNet::NetworkID to, ::std::string const &message)
MCAPI void $onMessage(::std::string_view incomingMessage)
MCAPI void parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId)
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection > $getHeaders()
Definition SignalingService.h:274
Definition SignalingService.h:278
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > sendJsonRpc(::std::string const &message)
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message)
MCAPI void $onMessage(::std::string_view incomingMessage)
MCAPI void $_requestTurnConfig() const
static MCAPI void ** $vftableForPersistentWebSocket()
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url > $getUrl()
static MCAPI void ** $vftableForAppPlatformListener()
Definition SignalingService.h:346
MCAPI ::std::shared_ptr<::MessageTracker > $getMessageTracker()
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > $sendJsonRpc(::std::string const &message) const
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > $sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId)
MCAPI void $setTurnConfig(::std::vector<::NetherNet::StunRelayServer > &&config, ::std::chrono::steady_clock::time_point expiration)
static MCAPI void ** $vftable()
MCAPI void $onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $parseTurnConfig(::Json::Value const &config)
Definition SignalingService.h:276
MCAPI void update()
MCAPI ::Bedrock::Threading::Async<::std::error_code > signIn(::PlayerMessaging::SigninID localId)
MCAPI void $dtor()
MCAPI ::std::shared_ptr<::SignalingService::Connection > _makeConnection(::PlayerMessaging::SigninID id)
MCAPI void * $ctor(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::WorkerPool &pool, ::Scheduler &scheduler)
MCAPI SignalingService(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::WorkerPool &pool, ::Scheduler &scheduler)
MCAPI ::Bedrock::Threading::Async<::std::vector<::NetherNet::StunRelayServer > > getRelayConfig() const
static MCAPI void ** $vftable()
Definition WorkerPool.h:19
Definition ErrorInfo.h:9
Definition Url.h:7
Definition ISignalingEventHandler.h:12
Definition NetworkID.h:17
Definition StunRelayServer.h:7
Definition NetworkID.h:12
Definition SigninID.h:7
Definition Alias.h:14