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/network/services/signaling/json_rpc/IObserver.h"
15#include "mc/platform/ErrorInfo.h"
16#include "mc/platform/Result.h"
17
18// auto generated forward declare list
19// clang-format off
23class MessageTracker;
24namespace Bedrock::Http { class HeaderCollection; }
25namespace Bedrock::Http { class RetryPolicy; }
26namespace Bedrock::Http { struct Url; }
27namespace Bedrock::PubSub { class Subscription; }
28namespace Json { class Value; }
29namespace JsonRpc { class JsonRpcError; }
30namespace NetherNet { struct ISignalingEventHandler; }
31namespace NetherNet { struct NetworkID; }
32namespace NetherNet { struct StunRelayServer; }
33namespace PlayerMessaging { struct NetworkID; }
34// clang-format on
35
36class SignalingService : public ::Bedrock::EnableNonOwnerReferences,
37 public ::std::enable_shared_from_this<::SignalingService> {
38public:
39 // SignalingService inner types declare
40 // clang-format off
41 class Connection;
42 class Channel;
43 class ConnectionSpy;
45 class JsonRpcInterop;
46 // clang-format on
47
48 // SignalingService inner types define
49 enum class ConnectionStatus : uchar {
50 Connected = 0,
51 Disconnected = 1,
52 };
53
54 enum class SignInError : int {
55 Ok = 0,
56 EmptyAuthFromDiscovery = 100,
57 EmptyUrlFromDiscovery = 101,
58 ExpiredAuthFromDiscovery = 102,
59 };
60
62 public:
63 // member variables
64 // NOLINTBEGIN
79 // NOLINTEND
80
81 public:
82 // prevent constructor by default
83 Connection& operator=(Connection const&);
84 Connection(Connection const&);
85 Connection();
86
87 public:
88 // virtual functions
89 // NOLINTBEGIN
90 virtual ~Connection() /*override*/ = default;
91
92 virtual void onConnect() /*override*/;
93
94 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
95
96 virtual bool shouldReconnect() const /*override*/;
97
98 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
99
100 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() /*override*/;
101
102 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() /*override*/;
103
104 virtual void onDisconnect(bool, uint closeStatus) /*override*/;
105
106 virtual void _requestTurnConfig() const;
107
108 virtual void _sendPing() const;
109
110 virtual void onAppSuspended() /*override*/;
111
112 virtual void onAppResumed() /*override*/;
113 // NOLINTEND
114
115 public:
116 // member functions
117 // NOLINTBEGIN
119 ::NetherNet::ESessionError result,
120 ::std::vector<::NetherNet::StunRelayServer> const& config
121 );
122
123 MCNAPI ::Bedrock::Threading::Async<::std::error_code> connect();
124
125 MCNAPI void update();
126 // NOLINTEND
127
128 public:
129 // virtual function thunks
130 // NOLINTBEGIN
131 MCNAPI void $onConnect();
132
133 MCNAPI void $onMessage(::std::string_view incomingMessage);
134
135 MCNAPI bool $shouldReconnect() const;
136
137 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
138
139 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> $getHeaders();
140
141 MCNAPI ::Bedrock::Http::RetryPolicy $getReconnectPolicy();
142
143 MCNAPI void $onDisconnect(bool, uint closeStatus);
144
145 MCNAPI void $_requestTurnConfig() const;
146
147 MCNAPI void $_sendPing() const;
148
149 MCNAPI void $onAppSuspended();
150
151 MCNAPI void $onAppResumed();
152
153
154 // NOLINTEND
155 };
156
157 class Channel : public ::NetherNet::ISignalingInterface {
158 public:
159 // member variables
160 // NOLINTBEGIN
163 // NOLINTEND
164
165 public:
166 // prevent constructor by default
167 Channel& operator=(Channel const&);
168 Channel(Channel const&);
169 Channel();
170
171 public:
172 // virtual functions
173 // NOLINTBEGIN
174 virtual ~Channel() /*override*/ = default;
175
176 virtual ::Bedrock::Threading::Async<::NetherNet::ESessionError>
177 SendSignal(::NetherNet::NetworkID from, ::NetherNet::NetworkID to, ::std::string const& message) /*override*/;
178
179 virtual ::Bedrock::PubSub::Subscription
180 RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler) /*override*/;
181 // NOLINTEND
182
183 public:
184 // virtual function thunks
185 // NOLINTBEGIN
186 MCNAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError>
187 $SendSignal(::NetherNet::NetworkID from, ::NetherNet::NetworkID to, ::std::string const& message);
188
189 MCNAPI ::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler);
190
191
192 // NOLINTEND
193 };
194
196
198
199 class JsonRpcInterop : public ::ISignalingJsonRpcInterop, public ::JsonRpc::IObserver {
200 public:
201 // member variables
202 // NOLINTBEGIN
204 // NOLINTEND
205
206 public:
207 // prevent constructor by default
208 JsonRpcInterop& operator=(JsonRpcInterop const&);
209 JsonRpcInterop(JsonRpcInterop const&);
210 JsonRpcInterop();
211
212 public:
213 // virtual functions
214 // NOLINTBEGIN
215 virtual ~JsonRpcInterop() /*override*/ = default;
216
217 virtual ::std::
218 pair<::Bedrock::Threading::Async<::Bedrock::Result<void>>, ::Bedrock::Threading::Async<::std::error_code>>
219 sendJsonRpcTo(
221 ::std::optional<::std::string> const& messageId,
222 ::std::string const& message
223 ) const /*override*/;
224
225 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void>>
226 sendJsonRpc(::std::optional<::std::string> const& messageId, ::std::string const& message) const /*override*/;
227
228 virtual ::std::shared_ptr<::MessageTracker> getMessageTracker() /*override*/;
229
230 virtual ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry() /*override*/;
231
232 virtual void
233 parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId) /*override*/;
234
235 virtual void parseTurnConfig(::Json::Value const& config) /*override*/;
236
237 virtual void setTurnConfig(
238 ::std::vector<::NetherNet::StunRelayServer>&& config,
239 ::std::chrono::steady_clock::time_point expiration
240 ) /*override*/;
241
242 virtual void onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError> const& error) /*override*/;
243
244 virtual void onJsonRpcSent(::std::string_view method, ::std::string_view messageId) /*override*/;
245
246 virtual void onJsonRpcReceived(::std::string_view method, ::Json::Value const& messageId) /*override*/;
247
248 virtual void onJsonRpcResultAccepted(::std::string const& messageId) /*override*/;
249
250 virtual void
251 onJsonRpcResultErrored(::std::string const& messageId, ::JsonRpc::JsonRpcError const& error) /*override*/;
252 // NOLINTEND
253
254 public:
255 // virtual function thunks
256 // NOLINTBEGIN
257 MCNAPI ::std::
258 pair<::Bedrock::Threading::Async<::Bedrock::Result<void>>, ::Bedrock::Threading::Async<::std::error_code>>
261 ::std::optional<::std::string> const& messageId,
262 ::std::string const& message
263 ) const;
264
265 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void>>
266 $sendJsonRpc(::std::optional<::std::string> const& messageId, ::std::string const& message) const;
267
268 MCNAPI ::std::shared_ptr<::MessageTracker> $getMessageTracker();
269
270 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const> $getTelemetry();
271
272 MCNAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
273
274 MCNAPI void $parseTurnConfig(::Json::Value const& config);
275
276 MCNAPI void $setTurnConfig(
277 ::std::vector<::NetherNet::StunRelayServer>&& config,
278 ::std::chrono::steady_clock::time_point expiration
279 );
280
282
283 MCNAPI void $onJsonRpcSent(::std::string_view method, ::std::string_view messageId);
284
285 MCNAPI void $onJsonRpcReceived(::std::string_view method, ::Json::Value const& messageId);
286
287 MCNAPI void $onJsonRpcResultAccepted(::std::string const& messageId);
288
289 MCNAPI void $onJsonRpcResultErrored(::std::string const& messageId, ::JsonRpc::JsonRpcError const& error);
290
291
292 // NOLINTEND
293 };
294
295public:
296 // member variables
297 // NOLINTBEGIN
307 // NOLINTEND
308
309public:
310 // prevent constructor by default
311 SignalingService& operator=(SignalingService const&);
312 SignalingService(SignalingService const&);
313 SignalingService();
314
315public:
316 // virtual functions
317 // NOLINTBEGIN
318 virtual ~SignalingService() /*override*/ = default;
319 // NOLINTEND
320
321public:
322 // member functions
323 // NOLINTBEGIN
325 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
326 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
327 );
328
329 MCNAPI ::std::shared_ptr<::SignalingService::Connection> _makeConnection(::PlayerMessaging::NetworkID id);
330
331#ifdef LL_PLAT_C
332 MCNAPI void addNetworkIdMapping(::NetherNet::NetworkID nethernetId, ::PlayerMessaging::NetworkID playerMessagingId);
333
334 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry() const;
335#endif
336 // NOLINTEND
337
338public:
339 // constructor thunks
340 // NOLINTBEGIN
341 MCNAPI void* $ctor(
342 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
343 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
344 );
345 // NOLINTEND
346};
Definition AppPlatformListener.h:16
Definition EnableNonOwnerReferences.h:7
Definition HeaderCollection.h:7
Definition PersistentWebSocket.h:20
Definition RetryPolicy.h:12
Definition Subscription.h:10
The game spells this as an AsyncImplBase<T> base subobject holding the handle; a member at the same o...
Definition Async.h:13
Definition IJsonRpcComponent.h:10
Definition IMinecraftEventing.h:147
Definition ISignalingJsonRpcInterop.h:22
Definition ISignalingServiceTelemetry.h:14
Definition IObserver.h:13
Definition JsonRpcError.h:7
Definition Value.h:16
Definition MessageTracker.h:17
Definition ISignalingInterface.h:18
Definition SignalingService.h:157
MCAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError > $SendSignal(::NetherNet::NetworkID from, ::NetherNet::NetworkID to, ::std::string const &message)
MCAPI::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler *handler)
Definition SignalingService.h:195
Definition SignalingService.h:61
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url > $getUrl()
MCAPI void _sendTurnConfigTelemetry(::NetherNet::ESessionError result, ::std::vector<::NetherNet::StunRelayServer > const &config)
MCAPI void $onDisconnect(bool, uint closeStatus)
MCAPI::Bedrock::Http::RetryPolicy $getReconnectPolicy()
MCAPI bool $shouldReconnect() const
MCAPI void $_sendPing() const
MCAPI ::Bedrock::Threading::Async<::std::error_code > connect()
MCAPI void $_requestTurnConfig() const
MCAPI void $onMessage(::std::string_view incomingMessage)
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection > $getHeaders()
Definition SignalingService.h:199
MCAPI void $onJsonRpcReceived(::std::string_view method, ::Json::Value const &messageId)
MCAPI ::std::shared_ptr<::ISignalingServiceTelemetry const > $getTelemetry()
MCAPI ::std::shared_ptr<::MessageTracker > $getMessageTracker()
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void > > $sendJsonRpc(::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI ::std::pair<::Bedrock::Threading::Async<::Bedrock::Result< void > >, ::Bedrock::Threading::Async<::std::error_code > > $sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI void $onJsonRpcSent(::std::string_view method, ::std::string_view messageId)
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)
MCAPI void $onJsonRpcResultErrored(::std::string const &messageId, ::JsonRpc::JsonRpcError const &error)
MCAPI void $onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $onJsonRpcResultAccepted(::std::string const &messageId)
MCAPI void $parseTurnConfig(::Json::Value const &config)
Definition SignalingService.h:197
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<::SignalingService::Connection > _makeConnection(::PlayerMessaging::NetworkID id)
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