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
23class MessageTracker;
24class Scheduler;
26class WorkerPool;
27namespace Bedrock::Http { class HeaderCollection; }
28namespace Bedrock::Http { class RetryPolicy; }
29namespace Bedrock::Http { struct Url; }
30namespace Bedrock::PubSub { class Subscription; }
31namespace Json { class Value; }
32namespace NetherNet { struct ISignalingEventHandler; }
33namespace NetherNet { struct NetworkID; }
34namespace NetherNet { struct StunRelayServer; }
35namespace PlayerMessaging { struct NetworkID; }
36// clang-format on
37
38class SignalingService : public ::Bedrock::EnableNonOwnerReferences,
39 public ::std::enable_shared_from_this<::SignalingService> {
40public:
41 // SignalingService inner types declare
42 // clang-format off
43 class Connection;
44 class Channel;
48 class JsonRpcInterop;
49 // clang-format on
50
51 // SignalingService inner types define
52 enum class ConnectionStatus : uchar {
53 Connected = 0,
54 Disconnected = 1,
55 };
56
57 enum class SignInError : int {
58 Ok = 0,
59 EmptyAuthFromDiscovery = 100,
60 EmptyUrlFromDiscovery = 101,
61 ExpiredAuthFromDiscovery = 102,
62 };
63
65 public:
66 // Connection inner types define
67 enum class ServiceError : int {
68 UnknownError = 0,
69 PlayerUnreachable = 1,
70 MessageDeliveryFailed = 2,
71 TurnAuthFailed = 3,
72 FallbackToBestEffortDelivery = 4,
73 };
74
75 public:
76 // member variables
77 // NOLINTBEGIN
90 // NOLINTEND
91
92 public:
93 // prevent constructor by default
94 Connection& operator=(Connection const&);
95 Connection(Connection const&);
96 Connection();
97
98 public:
99 // virtual functions
100 // NOLINTBEGIN
101 virtual ~Connection() /*override*/;
102
103 virtual void onConnect() /*override*/;
104
105 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
106
107 virtual bool shouldReconnect() const /*override*/;
108
109 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
110
111 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() /*override*/;
112
113 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() /*override*/;
114
115 virtual void onDisconnect(bool, uint closeStatus) /*override*/;
116
117 virtual void _requestTurnConfig() const;
118
119 virtual void _sendPing() const;
120
121 virtual void onAppSuspended() /*override*/;
122
123 virtual void onAppResumed() /*override*/;
124 // NOLINTEND
125
126 public:
127 // member functions
128 // NOLINTBEGIN
130 ::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID> id,
131 ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider> serviceConfigProvider,
132 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
133 bool useJsonRpc,
134 ::std::chrono::seconds const& pingInterval
135 );
136
137 MCNAPI void _parseError(::std::string const& message, ::std::string messageId);
138
139 MCNAPI ::Bedrock::Result<::std::vector<::NetherNet::StunRelayServer>, ::NetherNet::ESessionError>
141
143 ::NetherNet::ESessionError result,
144 ::std::vector<::NetherNet::StunRelayServer> const& config
145 );
146
147 MCNAPI ::Bedrock::Threading::Async<::std::error_code> connect();
148
150
151 MCNAPI void parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
152
153 MCNAPI void parseTurnConfig(::std::string const& bodyText);
154
155 MCNAPI void parseTurnConfig(::Json::Value const& config);
156
157 MCNAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError>
158 sendTo(::NetherNet::NetworkID to, ::std::string const& message);
159
160 MCNAPI void update();
161 // NOLINTEND
162
163 public:
164 // constructor thunks
165 // NOLINTBEGIN
166 MCNAPI void* $ctor(
167 ::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID> id,
168 ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider> serviceConfigProvider,
169 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
170 bool useJsonRpc,
171 ::std::chrono::seconds const& pingInterval
172 );
173 // NOLINTEND
174
175 public:
176 // destructor thunk
177 // NOLINTBEGIN
178 MCNAPI void $dtor();
179 // NOLINTEND
180
181 public:
182 // virtual function thunks
183 // NOLINTBEGIN
184 MCNAPI void $onConnect();
185
186 MCNAPI void $onMessage(::std::string_view incomingMessage);
187
188 MCNAPI bool $shouldReconnect() const;
189
190 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
191
192 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> $getHeaders();
193
194 MCNAPI ::Bedrock::Http::RetryPolicy $getReconnectPolicy();
195
196 MCNAPI void $onDisconnect(bool, uint closeStatus);
197
198 MCNAPI void $_requestTurnConfig() const;
199
200 MCNAPI void $_sendPing() const;
201
202 MCNAPI void $onAppSuspended();
203
204 MCNAPI void $onAppResumed();
205
206
207 // NOLINTEND
208
209 public:
210 // vftables
211 // NOLINTBEGIN
212 MCNAPI static void** $vftableForPersistentWebSocket();
213
214 MCNAPI static void** $vftableForAppPlatformListener();
215 // NOLINTEND
216 };
217
218 class Channel : public ::NetherNet::ISignalingInterface {
219 public:
220 // member variables
221 // NOLINTBEGIN
226 // NOLINTEND
227
228 public:
229 // prevent constructor by default
230 Channel& operator=(Channel const&);
231 Channel(Channel const&);
232 Channel();
233
234 public:
235 // virtual functions
236 // NOLINTBEGIN
237 virtual ~Channel() /*override*/ = default;
238
239 virtual void SendSignal(
242 ::std::string const& message,
243 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
244 ) /*override*/;
245
246 virtual ::Bedrock::PubSub::Subscription
247 RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler) /*override*/;
248 // NOLINTEND
249
250 public:
251 // virtual function thunks
252 // NOLINTBEGIN
253 MCNAPI void $SendSignal(
256 ::std::string const& message,
257 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
258 );
259
260 MCNAPI ::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler);
261
262
263 // NOLINTEND
264
265 public:
266 // vftables
267 // NOLINTBEGIN
268 MCNAPI static void** $vftable();
269 // NOLINTEND
270 };
271
273
275
276 class JsonRpcConnection : public ::SignalingService::Connection {
277 public:
278 // member variables
279 // NOLINTBEGIN
282 // NOLINTEND
283
284 public:
285 // prevent constructor by default
286 JsonRpcConnection& operator=(JsonRpcConnection const&);
287 JsonRpcConnection(JsonRpcConnection const&);
288 JsonRpcConnection();
289
290 public:
291 // virtual functions
292 // NOLINTBEGIN
293 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
294
295 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
296
297 virtual void onConnect() /*override*/;
298
299 virtual ~JsonRpcConnection() /*override*/ = default;
300
301 virtual void _sendPing() const /*override*/;
302
303 virtual void _requestTurnConfig() const /*override*/;
304 // NOLINTEND
305
306 public:
307 // member functions
308 // NOLINTBEGIN
309 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
310 sendJsonRpc(::std::string const& message);
311
312 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> sendJsonRpcTo(
314 ::std::optional<::std::string> const& messageId,
315 ::std::string const& message
316 );
317 // NOLINTEND
318
319 public:
320 // virtual function thunks
321 // NOLINTBEGIN
322 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
323
324 MCNAPI void $onMessage(::std::string_view incomingMessage);
325
326 MCNAPI void $onConnect();
327
328 MCNAPI void $_sendPing() const;
329
330 MCNAPI void $_requestTurnConfig() const;
331
332
333 // NOLINTEND
334
335 public:
336 // vftables
337 // NOLINTBEGIN
338 MCNAPI static void** $vftableForPersistentWebSocket();
339
340 MCNAPI static void** $vftableForAppPlatformListener();
341 // NOLINTEND
342 };
343
344 class JsonRpcInterop : public ::ISignalingJsonRpcInterop {
345 public:
346 // member variables
347 // NOLINTBEGIN
349 // NOLINTEND
350
351 public:
352 // prevent constructor by default
353 JsonRpcInterop& operator=(JsonRpcInterop const&);
354 JsonRpcInterop(JsonRpcInterop const&);
355 JsonRpcInterop();
356
357 public:
358 // virtual functions
359 // NOLINTBEGIN
360 virtual ~JsonRpcInterop() /*override*/ = default;
361
362 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> sendJsonRpcTo(
364 ::std::optional<::std::string> const& messageId,
365 ::std::string const& message
366 ) const /*override*/;
367
368 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
369 sendJsonRpc(::std::string const& message) const /*override*/;
370
371 virtual ::std::shared_ptr<::MessageTracker> getMessageTracker() /*override*/;
372
373 virtual void
374 parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId) /*override*/;
375
376 virtual void parseTurnConfig(::Json::Value const& config) /*override*/;
377
378 virtual void setTurnConfig(
379 ::std::vector<::NetherNet::StunRelayServer>&& config,
380 ::std::chrono::steady_clock::time_point expiration
381 ) /*override*/;
382
383 virtual void onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError> const& error) /*override*/;
384 // NOLINTEND
385
386 public:
387 // virtual function thunks
388 // NOLINTBEGIN
389 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> $sendJsonRpcTo(
391 ::std::optional<::std::string> const& messageId,
392 ::std::string const& message
393 ) const;
394
395 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
396 $sendJsonRpc(::std::string const& message) const;
397
398 MCNAPI ::std::shared_ptr<::MessageTracker> $getMessageTracker();
399
400 MCNAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
401
402 MCNAPI void $parseTurnConfig(::Json::Value const& config);
403
404 MCNAPI void $setTurnConfig(
405 ::std::vector<::NetherNet::StunRelayServer>&& config,
406 ::std::chrono::steady_clock::time_point expiration
407 );
408
410
411
412 // NOLINTEND
413
414 public:
415 // vftables
416 // NOLINTBEGIN
417 MCNAPI static void** $vftable();
418 // NOLINTEND
419 };
420
421public:
422 // member variables
423 // 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 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
458 );
459
461 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
462 ::WorkerPool& pool,
463 ::Scheduler& scheduler,
464 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
465 );
466
467 MCNAPI ::std::shared_ptr<::SignalingService::Connection>
468 _makeConnection(::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID> id);
469
470 MCNAPI ::Bedrock::Threading::Async<::std::vector<::NetherNet::StunRelayServer>> getRelayConfig() const;
471
472 MCNAPI ::std::shared_ptr<::SignalingConsumerRefCount> getSignalingConsumerRefCount();
473
474#ifdef LL_PLAT_C
475 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry() const;
476#endif
477
478 MCNAPI ::Bedrock::Threading::Async<::std::error_code>
479 signIn(::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID> localId);
480 // NOLINTEND
481
482public:
483 // constructor thunks
484 // NOLINTBEGIN
485 MCNAPI void* $ctor(
486 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
487 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
488 );
489
490 MCNAPI void* $ctor(
491 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
492 ::WorkerPool& pool,
493 ::Scheduler& scheduler,
494 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
495 );
496 // NOLINTEND
497
498public:
499 // destructor thunk
500 // NOLINTBEGIN
501 MCNAPI void $dtor();
502 // NOLINTEND
503
504public:
505 // vftables
506 // NOLINTBEGIN
507 MCNAPI static void** $vftable();
508 // NOLINTEND
509};
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 IJsonRpcComponent.h:10
Definition IMinecraftEventing.h:134
Definition ISignalingJsonRpcInterop.h:20
Definition ISignalingServiceConfigProvider.h:14
Definition ISignalingServiceTelemetry.h:14
Definition Value.h:16
Definition MessageTracker.h:19
Definition ISignalingInterface.h:17
Definition Scheduler.h:14
Definition SignalingConsumerRefCount.h:5
Definition SignalingService.h:218
MCAPI void $SendSignal(::NetherNet::NetworkID from, ::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:64
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 Connection(::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID > id, ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider > serviceConfigProvider, ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, bool useJsonRpc, ::std::chrono::seconds const &pingInterval)
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 void * $ctor(::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID > id, ::Bedrock::NotNullNonOwnerPtr<::ISignalingServiceConfigProvider > serviceConfigProvider, ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, bool useJsonRpc, ::std::chrono::seconds const &pingInterval)
MCAPI ::Bedrock::Threading::Async<::std::error_code > connect()
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:272
Definition SignalingService.h:276
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:344
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:274
MCAPI ::Bedrock::Threading::Async<::std::error_code > signIn(::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID > localId)
MCAPI SignalingService(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::std::vector<::std::shared_ptr<::IJsonRpcComponent > > additionalJsonRpcComponents)
MCAPI void * $ctor(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::std::vector<::std::shared_ptr<::IJsonRpcComponent > > additionalJsonRpcComponents)
MCAPI ::std::shared_ptr<::SignalingConsumerRefCount > getSignalingConsumerRefCount()
MCAPI void $dtor()
MCAPI ::std::shared_ptr<::SignalingService::Connection > _makeConnection(::std::variant<::NetherNet::NetworkID, ::PlayerMessaging::NetworkID > id)
MCAPI void * $ctor(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::WorkerPool &pool, ::Scheduler &scheduler, ::std::vector<::std::shared_ptr<::IJsonRpcComponent > > additionalJsonRpcComponents)
MCAPI SignalingService(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::WorkerPool &pool, ::Scheduler &scheduler, ::std::vector<::std::shared_ptr<::IJsonRpcComponent > > additionalJsonRpcComponents)
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 Alias.h:14