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;
23namespace Bedrock::Http { class HeaderCollection; }
24namespace Bedrock::Http { class RetryPolicy; }
25namespace Bedrock::Http { struct Url; }
26namespace Bedrock::PubSub { class Subscription; }
27namespace Json { class Value; }
28namespace NetherNet { struct ISignalingEventHandler; }
29namespace NetherNet { struct NetworkID; }
30namespace NetherNet { struct StunRelayServer; }
31namespace PlayerMessaging { struct NetworkID; }
32// clang-format on
33
34class SignalingService : public ::Bedrock::EnableNonOwnerReferences,
35 public ::std::enable_shared_from_this<::SignalingService> {
36public:
37 // SignalingService inner types declare
38 // clang-format off
39 class Connection;
40 class Channel;
41 class ConnectionSpy;
43 class JsonRpcInterop;
44 // clang-format on
45
46 // SignalingService inner types define
47 enum class ConnectionStatus : uchar {
48 Connected = 0,
49 Disconnected = 1,
50 };
51
52 enum class SignInError : int {
53 Ok = 0,
54 EmptyAuthFromDiscovery = 100,
55 EmptyUrlFromDiscovery = 101,
56 ExpiredAuthFromDiscovery = 102,
57 };
58
60 public:
61 // member variables
62 // NOLINTBEGIN
77 // NOLINTEND
78
79 public:
80 // prevent constructor by default
81 Connection& operator=(Connection const&);
82 Connection(Connection const&);
83 Connection();
84
85 public:
86 // virtual functions
87 // NOLINTBEGIN
88 virtual ~Connection() /*override*/ = default;
89
90 virtual void onConnect() /*override*/;
91
92 virtual void onMessage(::std::string_view incomingMessage) /*override*/;
93
94 virtual bool shouldReconnect() const /*override*/;
95
96 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() /*override*/;
97
98 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() /*override*/;
99
100 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() /*override*/;
101
102 virtual void onDisconnect(bool, uint closeStatus) /*override*/;
103
104 virtual void _requestTurnConfig() const;
105
106 virtual void _sendPing() const;
107
108 virtual void onAppSuspended() /*override*/;
109
110 virtual void onAppResumed() /*override*/;
111 // NOLINTEND
112
113 public:
114 // member functions
115 // NOLINTBEGIN
117 ::NetherNet::ESessionError result,
118 ::std::vector<::NetherNet::StunRelayServer> const& config
119 );
120
121 MCNAPI ::Bedrock::Threading::Async<::std::error_code> connect();
122
123 MCNAPI void update();
124 // NOLINTEND
125
126 public:
127 // virtual function thunks
128 // NOLINTBEGIN
129 MCNAPI void $onConnect();
130
131 MCNAPI void $onMessage(::std::string_view incomingMessage);
132
133 MCNAPI bool $shouldReconnect() const;
134
135 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url> $getUrl();
136
137 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> $getHeaders();
138
139 MCNAPI ::Bedrock::Http::RetryPolicy $getReconnectPolicy();
140
141 MCNAPI void $onDisconnect(bool, uint closeStatus);
142
143 MCNAPI void $_requestTurnConfig() const;
144
145 MCNAPI void $_sendPing() const;
146
147 MCNAPI void $onAppSuspended();
148
149 MCNAPI void $onAppResumed();
150
151
152 // NOLINTEND
153 };
154
155 class Channel : public ::NetherNet::ISignalingInterface {
156 public:
157 // member variables
158 // NOLINTBEGIN
161 // NOLINTEND
162
163 public:
164 // prevent constructor by default
165 Channel& operator=(Channel const&);
166 Channel(Channel const&);
167 Channel();
168
169 public:
170 // virtual functions
171 // NOLINTBEGIN
172 virtual ~Channel() /*override*/ = default;
173
174 virtual void SendSignal(
177 ::std::string const& message,
178 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
179 ) /*override*/;
180
181 virtual ::Bedrock::PubSub::Subscription
182 RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler) /*override*/;
183 // NOLINTEND
184
185 public:
186 // virtual function thunks
187 // NOLINTBEGIN
188 MCNAPI void $SendSignal(
191 ::std::string const& message,
192 ::std::function<void(::NetherNet::ESessionError)>&& onComplete
193 );
194
195 MCNAPI ::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler* handler);
196
197
198 // NOLINTEND
199 };
200
202
204
205 class JsonRpcInterop : public ::ISignalingJsonRpcInterop {
206 public:
207 // member variables
208 // NOLINTBEGIN
210 // NOLINTEND
211
212 public:
213 // prevent constructor by default
214 JsonRpcInterop& operator=(JsonRpcInterop const&);
215 JsonRpcInterop(JsonRpcInterop const&);
216 JsonRpcInterop();
217
218 public:
219 // virtual functions
220 // NOLINTBEGIN
221 virtual ~JsonRpcInterop() /*override*/ = default;
222
223 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> sendJsonRpcTo(
225 ::std::optional<::std::string> const& messageId,
226 ::std::string const& message
227 ) const /*override*/;
228
229 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
230 sendJsonRpc(::std::optional<::std::string> const& messageId, ::std::string const& message) const /*override*/;
231
232 virtual ::std::shared_ptr<::MessageTracker> getMessageTracker() /*override*/;
233
234 virtual void
235 parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId) /*override*/;
236
237 virtual void parseTurnConfig(::Json::Value const& config) /*override*/;
238
239 virtual void setTurnConfig(
240 ::std::vector<::NetherNet::StunRelayServer>&& config,
241 ::std::chrono::steady_clock::time_point expiration
242 ) /*override*/;
243
244 virtual void onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError> const& error) /*override*/;
245 // NOLINTEND
246
247 public:
248 // virtual function thunks
249 // NOLINTBEGIN
250 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> $sendJsonRpcTo(
252 ::std::optional<::std::string> const& messageId,
253 ::std::string const& message
254 ) const;
255
256 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
257 $sendJsonRpc(::std::optional<::std::string> const& messageId, ::std::string const& message) const;
258
259 MCNAPI ::std::shared_ptr<::MessageTracker> $getMessageTracker();
260
261 MCNAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId);
262
263 MCNAPI void $parseTurnConfig(::Json::Value const& config);
264
265 MCNAPI void $setTurnConfig(
266 ::std::vector<::NetherNet::StunRelayServer>&& config,
267 ::std::chrono::steady_clock::time_point expiration
268 );
269
271
272
273 // NOLINTEND
274 };
275
276public:
277 // member variables
278 // NOLINTBEGIN
288 // NOLINTEND
289
290public:
291 // prevent constructor by default
292 SignalingService& operator=(SignalingService const&);
293 SignalingService(SignalingService const&);
294 SignalingService();
295
296public:
297 // virtual functions
298 // NOLINTBEGIN
299 virtual ~SignalingService() /*override*/ = default;
300 // NOLINTEND
301
302public:
303 // member functions
304 // NOLINTBEGIN
306 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
307 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
308 );
309
310 MCNAPI ::std::shared_ptr<::SignalingService::Connection> _makeConnection(::PlayerMessaging::NetworkID id);
311
312#ifdef LL_PLAT_C
313 MCNAPI void addNetworkIdMapping(::NetherNet::NetworkID nethernetId, ::PlayerMessaging::NetworkID playerMessagingId);
314
315 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry() const;
316#endif
317 // NOLINTEND
318
319public:
320 // constructor thunks
321 // NOLINTBEGIN
322 MCNAPI void* $ctor(
323 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
324 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
325 );
326 // NOLINTEND
327};
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:145
Definition ISignalingJsonRpcInterop.h:20
Definition ISignalingServiceTelemetry.h:14
Definition Value.h:16
Definition MessageTracker.h:16
Definition ISignalingInterface.h:17
Definition SignalingService.h:155
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)
Definition SignalingService.h:201
Definition SignalingService.h:59
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:205
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > $sendJsonRpc(::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI ::std::shared_ptr<::MessageTracker > $getMessageTracker()
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)
MCAPI void $onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $parseTurnConfig(::Json::Value const &config)
Definition SignalingService.h:203
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