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/Copyable.h"
15#include "mc/platform/ErrorInfo.h"
16#include "mc/platform/Result.h"
17
18// auto generated forward declare list
19// 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
38 public ::std::enable_shared_from_this<::SignalingService> {
39public:
40 // SignalingService inner types declare
41 // clang-format off
42 class Channel;
43 class Connection;
46 class JsonRpcInterop;
48 // clang-format on
49
50 // SignalingService inner types define
51 enum class SignInError : int {
52 Ok = 0,
53 EmptyAuthFromDiscovery = 100,
54 EmptyUrlFromDiscovery = 101,
55 ExpiredAuthFromDiscovery = 102,
56 };
57
58 enum class ConnectionStatus : uchar {
59 Connected = 0,
60 Disconnected = 1,
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 // vIndex: 0
100 virtual ~Connection() /*override*/;
101
102 // vIndex: 2
103 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
104
105 // vIndex: 5
106 virtual bool shouldReconnect() const /*override*/;
107
108 // vIndex: 6
109 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
110
111 // vIndex: 7
112 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() /*override*/;
113
114 // vIndex: 8
115 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() /*override*/;
116
117 // vIndex: 9
118 virtual void onConnect() /*override*/;
119
120 // vIndex: 10
121 virtual void onDisconnect(bool, uint closeStatus) /*override*/;
122
123 // vIndex: 11
124 virtual void _requestTurnConfig() const;
125
126 // vIndex: 12
127 virtual void _sendPing() const;
128
129 // vIndex: 4
130 virtual void onAppSuspended() /*override*/;
131
132 // vIndex: 5
133 virtual void onAppResumed() /*override*/;
134 // NOLINTEND
135
136 public:
137 // member functions
138 // NOLINTBEGIN
141 ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider> serviceConfigProvider,
142 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
143 bool useJsonRpc
144 );
145
146 MCNAPI void _handleError(
147 ::SignalingService::Connection::ServiceError errorCode,
148 ::std::string const& errorMessage,
149 ::std::string const& messageId
150 );
151
152 MCNAPI void _parseError(::std::string const& message, ::std::string messageId);
153
154 MCNAPI ::Bedrock::Result<::std::vector<::NetherNet::StunRelayServer>, ::NetherNet::ESessionError>
156
158 ::NetherNet::ESessionError result,
159 ::std::vector<::NetherNet::StunRelayServer> const& config
160 );
161
162 MCNAPI ::Bedrock::Threading::Async<::std::error_code> connect();
163
165
166 MCNAPI void parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
167
168 MCNAPI void parseTurnConfig(::std::string const& bodyText);
169
170 MCNAPI void parseTurnConfig(::Json::Value const& config);
171
172 MCNAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError>
173 sendTo(::NetherNet::NetworkID to, ::std::string const& message);
174
175 MCNAPI void update();
176 // NOLINTEND
177
178 public:
179 // constructor thunks
180 // NOLINTBEGIN
181 MCNAPI void* $ctor(
183 ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider> serviceConfigProvider,
184 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
185 bool useJsonRpc
186 );
187 // NOLINTEND
188
189 public:
190 // destructor thunk
191 // NOLINTBEGIN
192 MCNAPI void $dtor();
193 // NOLINTEND
194
195 public:
196 // virtual function thunks
197 // NOLINTBEGIN
198 MCNAPI void $onMessage(::std::string_view incomingMessage);
199
200 MCNAPI bool $shouldReconnect() const;
201
202 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
203
204 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> $getHeaders();
205
206 MCNAPI ::Bedrock::Http::RetryPolicy $getReconnectPolicy();
207
208 MCNAPI void $onConnect();
209
210 MCNAPI void $onDisconnect(bool, uint closeStatus);
211
212 MCNAPI void $_requestTurnConfig() const;
213
214 MCNAPI void $_sendPing() const;
215
216 MCNAPI void $onAppSuspended();
217
218 MCNAPI void $onAppResumed();
219 // NOLINTEND
220
221 public:
222 // vftables
223 // NOLINTBEGIN
224 MCNAPI static void** $vftableForPersistentWebSocket();
225
226 MCNAPI static void** $vftableForAppPlatformListener();
227 // NOLINTEND
228 };
229
231 public:
232 // member variables
233 // NOLINTBEGIN
236 // NOLINTEND
237
238 public:
239 // prevent constructor by default
240 JsonRpcConnection& operator=(JsonRpcConnection const&);
243
244 public:
245 // virtual functions
246 // NOLINTBEGIN
247 // vIndex: 6
248 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
249
250 // vIndex: 2
251 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
252
253 // vIndex: 9
254 virtual void onConnect() /*override*/;
255
256 // vIndex: 0
257 virtual ~JsonRpcConnection() /*override*/ = default;
258
259 // vIndex: 12
260 virtual void _sendPing() const /*override*/;
261
262 // vIndex: 11
263 virtual void _requestTurnConfig() const /*override*/;
264 // NOLINTEND
265
266 public:
267 // member functions
268 // NOLINTBEGIN
269 MCNAPI ::Bedrock::Threading::Async<
271 sendJsonRpc(::std::string const& message);
272
273 MCNAPI ::Bedrock::Threading::Async<
277 ::std::optional<::std::string> const& messageId,
278 ::std::string const& message
279 );
280 // NOLINTEND
281
282 public:
283 // virtual function thunks
284 // NOLINTBEGIN
285 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
286
287 MCNAPI void $onMessage(::std::string_view incomingMessage);
288
289 MCNAPI void $onConnect();
290
291 MCNAPI void $_sendPing() const;
292
293 MCNAPI void $_requestTurnConfig() const;
294 // NOLINTEND
295
296 public:
297 // vftables
298 // NOLINTBEGIN
299 MCNAPI static void** $vftableForPersistentWebSocket();
300
301 MCNAPI static void** $vftableForAppPlatformListener();
302 // NOLINTEND
303 };
304
306
308
310 public:
311 // member variables
312 // NOLINTBEGIN
317 // NOLINTEND
318
319 public:
320 // prevent constructor by default
321 Channel& operator=(Channel const&);
322 Channel(Channel const&);
323 Channel();
324
325 public:
326 // virtual functions
327 // NOLINTBEGIN
328 // vIndex: 0
329 virtual ~Channel() /*override*/ = default;
330
331 // vIndex: 1
332 virtual void SendSignal(
334 ::std::string const& message,
335 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
336 ) /*override*/;
337
338 // vIndex: 2
339 virtual ::Bedrock::PubSub::Subscription
340 RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler) /*override*/;
341 // NOLINTEND
342
343 public:
344 // member functions
345 // NOLINTBEGIN
347 ::NetherNet::NetworkID networkIDTo,
348 ::std::string const& message,
349 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
350 );
351 // NOLINTEND
352
353 public:
354 // virtual function thunks
355 // NOLINTBEGIN
356 MCNAPI void $SendSignal(
358 ::std::string const& message,
359 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
360 );
361
362 MCNAPI ::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler);
363 // NOLINTEND
364
365 public:
366 // vftables
367 // NOLINTBEGIN
368 MCNAPI static void** $vftable();
369 // NOLINTEND
370 };
371
373 public:
374 // member variables
375 // NOLINTBEGIN
377 // NOLINTEND
378
379 public:
380 // prevent constructor by default
381 JsonRpcInterop& operator=(JsonRpcInterop const&);
384
385 public:
386 // virtual functions
387 // NOLINTBEGIN
388 // vIndex: 0
389 virtual ~JsonRpcInterop() /*override*/ = default;
390
391 // vIndex: 1
392 virtual ::Bedrock::Threading::Async<
394 sendJsonRpcTo(
396 ::std::optional<::std::string> const& messageId,
397 ::std::string const& message
398 ) const /*override*/;
399
400 // vIndex: 2
401 virtual ::Bedrock::Threading::Async<
403 sendJsonRpc(::std::string const& message) const /*override*/;
404
405 // vIndex: 3
406 virtual ::gsl::not_null<::std::shared_ptr<::MessageTracker>> getMessageTracker() /*override*/;
407
408 // vIndex: 4
409 virtual void
410 parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId) /*override*/;
411
412 // vIndex: 5
413 virtual void parseTurnConfig(::Json::Value const& config) /*override*/;
414
415 // vIndex: 6
416 virtual void setTurnConfig(
417 ::std::vector<::NetherNet::StunRelayServer>&& config,
418 ::std::chrono::steady_clock::time_point expiration
419 ) /*override*/;
420
421 // vIndex: 7
422 virtual void onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError> const& error) /*override*/;
423 // NOLINTEND
424
425 public:
426 // virtual function thunks
427 // NOLINTBEGIN
428 MCNAPI ::Bedrock::Threading::Async<
432 ::std::optional<::std::string> const& messageId,
433 ::std::string const& message
434 ) const;
435
436 MCNAPI ::Bedrock::Threading::Async<
438 $sendJsonRpc(::std::string const& message) const;
439
440 MCNAPI ::gsl::not_null<::std::shared_ptr<::MessageTracker>> $getMessageTracker();
441
442 MCNAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
443
444 MCNAPI void $parseTurnConfig(::Json::Value const& config);
445
446 MCNAPI void $setTurnConfig(
447 ::std::vector<::NetherNet::StunRelayServer>&& config,
448 ::std::chrono::steady_clock::time_point expiration
449 );
450
452 // NOLINTEND
453
454 public:
455 // vftables
456 // NOLINTBEGIN
457 MCNAPI static void** $vftable();
458 // NOLINTEND
459 };
460
461public:
462 // member variables
463 // NOLINTBEGIN
476 // NOLINTEND
477
478public:
479 // prevent constructor by default
480 SignalingService& operator=(SignalingService const&);
483
484public:
485 // virtual functions
486 // NOLINTBEGIN
487 // vIndex: 0
488 virtual ~SignalingService() /*override*/;
489 // NOLINTEND
490
491public:
492 // member functions
493 // NOLINTBEGIN
495 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
496 ::WorkerPool& pool,
497 ::Scheduler& scheduler
498 );
499
500 MCNAPI ::std::shared_ptr<::SignalingService::Connection> _makeConnection(::PlayerMessaging::SigninID id);
501
502 MCNAPI ::Bedrock::Threading::Async<::std::vector<::NetherNet::StunRelayServer>> getRelayConfig() const;
503
504 MCNAPI ::Bedrock::Threading::Async<::std::error_code> signIn(::PlayerMessaging::SigninID localId);
505 // NOLINTEND
506
507public:
508 // constructor thunks
509 // NOLINTBEGIN
510 MCNAPI void*
511 $ctor(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing, ::WorkerPool& pool, ::Scheduler& scheduler);
512 // NOLINTEND
513
514public:
515 // destructor thunk
516 // NOLINTBEGIN
517 MCNAPI void $dtor();
518 // NOLINTEND
519
520public:
521 // vftables
522 // NOLINTBEGIN
523 MCNAPI static void** $vftable();
524 // NOLINTEND
525};
Definition AppPlatformListener.h:15
Definition Copyable.h:8
Definition EnableNonOwnerReferences.h:7
Definition PersistentWebSocket.h:20
Definition IMinecraftEventing.h:149
Definition ISignalingJsonRpcInterop.h:21
Definition ISignalingServiceConfigProvider.h:14
Definition Value.h:16
Definition MessageTracker.h:18
Definition ISignalingInterface.h:17
Definition Scheduler.h:13
Definition SignalingService.h:309
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 _handleError(::SignalingService::Connection::ServiceError errorCode, ::std::string const &errorMessage, ::std::string const &messageId)
MCAPI void parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId)
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection > $getHeaders()
Definition SignalingService.h:305
Definition SignalingService.h:230
MCAPI void $onMessage(::std::string_view incomingMessage)
MCAPI ::Bedrock::Threading::Async< ::Bedrock::Copyable<::Bedrock::Result<::std::monostate, ::NetherNet::ESessionError > > > sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message)
MCAPI ::Bedrock::Threading::Async< ::Bedrock::Copyable<::Bedrock::Result<::std::monostate, ::NetherNet::ESessionError > > > sendJsonRpc(::std::string const &message)
MCAPI void $_requestTurnConfig() const
static MCAPI void ** $vftableForPersistentWebSocket()
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url > $getUrl()
static MCAPI void ** $vftableForAppPlatformListener()
Definition SignalingService.h:372
MCAPI ::Bedrock::Threading::Async< ::Bedrock::Copyable<::Bedrock::Result<::std::monostate, ::NetherNet::ESessionError > > > $sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI ::Bedrock::Threading::Async< ::Bedrock::Copyable<::Bedrock::Result<::std::monostate, ::NetherNet::ESessionError > > > $sendJsonRpc(::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 ::gsl::not_null<::std::shared_ptr<::MessageTracker > > $getMessageTracker()
MCAPI void $onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $parseTurnConfig(::Json::Value const &config)
Definition SignalingService.h:307
Definition SignalingService.h:38
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 ISignalingEventHandler.h:12
Definition NetworkID.h:17
Definition NetworkID.h:7
Definition SigninID.h:7
Definition Alias.h:14