LeviLamina
Loading...
Searching...
No Matches
RakNetConnector.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/network/NetworkIdentifier.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/threading/MPMCQueue.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/network/Compressibility.h"
10#include "mc/network/ConnectionDefinition.h"
11#include "mc/network/Connector.h"
12#include "mc/network/GameConnectionInfo.h"
13#include "mc/network/NetworkIdentifier.h"
14#include "mc/network/NetworkPeer.h"
15#include "mc/network/RakPeerHelper.h"
16#include "mc/network/RemoteConnector.h"
17#include "mc/network/TransportLayer.h"
18#include "mc/network/connection/DisconnectFailReason.h"
19
20// auto generated forward declare list
21// clang-format off
22class AppPlatform;
23namespace RakNet { class RakPeerInterface; }
24namespace RakNet { struct RakNetStatistics; }
25namespace RakNet { struct RakPeerConfiguration; }
26namespace RakNet { struct SystemAddress; }
27// clang-format on
28
29class RakNetConnector : public ::RemoteConnector {
30public:
31 // RakNetConnector inner types declare
32 // clang-format off
34 struct PingCallbackData;
36 // clang-format on
37
38 // RakNetConnector inner types define
40 public:
41 // virtual functions
42 // NOLINTBEGIN
43 virtual ~ConnectionCallbacks() /*override*/ = default;
44
45 virtual void
46 onAllConnectionsClosed(::Connection::DisconnectFailReason discoReason, bool skipDisconnectMessage) = 0;
47
48 virtual void
49 onAllRemoteConnectionsClosed(::Connection::DisconnectFailReason discoReason, bool skipDisconnectMessage) = 0;
50
51 virtual void onOutgoingConnectionFailed(::Connection::DisconnectFailReason discoReason) = 0;
52
53 virtual void onWebsocketRequest(
54 ::std::string const& serverAddress,
55 ::std::string const& payload,
56 ::std::function<void()> errorCallback
57 ) = 0;
58 // NOLINTEND
59
60 public:
61 // virtual function thunks
62 // NOLINTBEGIN
63
64 // NOLINTEND
65
66 public:
67 // vftables
68 // NOLINTBEGIN
69 MCNAPI static void** $vftable();
70 // NOLINTEND
71 };
72
73 struct PingCallbackData {
74 public:
75 // member variables
76 // NOLINTBEGIN
77 ::ll::TypedStorage<8, 32, ::std::string> mAddress;
78 ::ll::TypedStorage<8, 64, ::std::function<void(uint)>> mAction;
79 // NOLINTEND
80
81 public:
82 // prevent constructor by default
83 PingCallbackData& operator=(PingCallbackData const&);
84 PingCallbackData(PingCallbackData const&);
85 PingCallbackData();
86
87 public:
88 // member functions
89 // NOLINTBEGIN
90 MCAPI ::RakNetConnector::PingCallbackData& operator=(::RakNetConnector::PingCallbackData&&);
91
92#ifdef LL_PLAT_C
93 MCAPI ~PingCallbackData();
94#endif
95 // NOLINTEND
96
97 public:
98 // destructor thunk
99 // NOLINTBEGIN
100#ifdef LL_PLAT_C
101 MCFOLD void $dtor();
102#endif
103 // NOLINTEND
104 };
105
106 class RakNetNetworkPeer : public ::NetworkPeer {
107 public:
108 // RakNetNetworkPeer inner types declare
109 // clang-format off
110 struct ReadBufferData;
111 // clang-format on
112
113 // RakNetNetworkPeer inner types define
115 public:
116 // member variables
117 // NOLINTBEGIN
118 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mTimepoint;
119 ::ll::TypedStorage<8, 32, ::std::string> mReadBuffer;
120 // NOLINTEND
121
122 public:
123 // member functions
124 // NOLINTBEGIN
125 MCAPI ~ReadBufferData();
126 // NOLINTEND
127
128 public:
129 // destructor thunk
130 // NOLINTBEGIN
131 MCFOLD void $dtor();
132 // NOLINTEND
133 };
134
135 public:
136 // member variables
137 // NOLINTBEGIN
140 ::std::string mSendBuffer;
141 ::std::vector<ReadBufferData> mReadBufferDatas;
142 int mApproximateMaxBps;
143 int mLastPing;
144 int mAveragePing;
145 // NOLINTEND
146
147 public:
148 // prevent constructor by default
149 RakNetNetworkPeer& operator=(RakNetNetworkPeer const&);
150 RakNetNetworkPeer(RakNetNetworkPeer const&);
151 RakNetNetworkPeer();
152
153 public:
154 // virtual functions
155 // NOLINTBEGIN
156 virtual void
157 sendPacket(::std::string const& data, ::NetworkPeer::Reliability reliability, ::Compressibility) /*override*/;
158
159 virtual ::NetworkPeer::DataStatus _receivePacket(
160 ::std::string& outData,
161 ::std::shared_ptr<::std::chrono::steady_clock::time_point> const& timepointPtr
162 ) /*override*/;
163
164 virtual ::NetworkPeer::NetworkStatus getNetworkStatus() const /*override*/;
165
166 virtual void update() /*override*/;
167
168 virtual bool isLocal() const /*override*/;
169
170 virtual bool isEncrypted() const /*override*/;
171 // NOLINTEND
172
173 public:
174 // member functions
175 // NOLINTBEGIN
176 MCAPI void newData(::std::string data);
177 // NOLINTEND
178
179 public:
180 // virtual function thunks
181 // NOLINTBEGIN
182 MCAPI void $sendPacket(::std::string const& data, ::NetworkPeer::Reliability reliability, ::Compressibility);
183
184 MCAPI ::NetworkPeer::DataStatus $_receivePacket(
185 ::std::string& outData,
186 ::std::shared_ptr<::std::chrono::steady_clock::time_point> const& timepointPtr
187 );
188 MCAPI ::NetworkPeer::NetworkStatus $getNetworkStatus() const;
189
190 MCAPI void $update();
191
192 MCFOLD bool $isLocal() const;
193
194 MCFOLD bool $isEncrypted() const;
195
196
197 // NOLINTEND
198
199 public:
200 // vftables
201 // NOLINTBEGIN
202 MCNAPI static void** $vftable();
203 // NOLINTEND
204 };
205
206public:
207 // member variables
208 // NOLINTBEGIN
209 ::ll::TypedStorage<8, 176, ::NetworkIdentifier> mNATPunchServerId;
210 ::ll::TypedStorage<8, 520, ::Social::GameConnectionInfo> mBackupGameConnection;
211 ::ll::TypedStorage<1, 1, bool> mTryBackupConnection;
212 ::ll::TypedStorage<8, 16, ::std::unique_ptr<::RakNet::RakPeerInterface, void (*)(::RakNet::RakPeerInterface*)>>
213 mRakPeer;
214 ::ll::TypedStorage<8, 176, ::NetworkIdentifier> mServerId;
215 ::ll::TypedStorage<8, 24, ::RakPeerHelper> mPeerHelper;
216 ::ll::TypedStorage<8, 8, ::RakPeerHelper::IPSupportInterface&> mIPSupportInterface;
217 ::ll::TypedStorage<1, 1, bool> mIsAwaitingNatClient;
218 ::ll::TypedStorage<1, 1, bool> mIsServer;
219 ::ll::TypedStorage<1, 1, bool> mIsDisconnecting;
220 ::ll::TypedStorage<1, 1, bool> mConnectingToClient;
221 ::ll::TypedStorage<8, 520, ::Social::GameConnectionInfo> mConnectedGameInfo;
222 ::ll::TypedStorage<
223 8,
224 64,
225 ::std::unordered_map<::NetworkIdentifier, ::std::weak_ptr<::RakNetConnector::RakNetNetworkPeer>>>
226 mPeers;
227 ::ll::TypedStorage<1, 1, bool> mWasHostWhenSuspended;
228 ::ll::TypedStorage<4, 20, ::ConnectionDefinition> mPreviousConnectionDefinition;
229 ::ll::TypedStorage<8, 32, ::std::string> mResolvedIP;
230 ::ll::TypedStorage<8, 24, ::std::vector<::RakNetConnector::PingCallbackData>> mPingTimeCallbacks;
231 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::MPMCQueue<::std::function<void()>>>> mOwnedThreadWork;
232 // NOLINTEND
233
234public:
235 // prevent constructor by default
236 RakNetConnector& operator=(RakNetConnector const&);
237 RakNetConnector(RakNetConnector const&);
238 RakNetConnector();
239
240public:
241 // virtual functions
242 // NOLINTBEGIN
243 virtual ~RakNetConnector() /*override*/;
244
245 virtual bool host(::ConnectionDefinition const& definition) /*override*/;
246
247 virtual bool connect(
248 ::Social::GameConnectionInfo const& primaryConnection,
249 ::Social::GameConnectionInfo const& backupConnection
250 ) /*override*/;
251
252 virtual void disconnect() /*override*/;
253
254 virtual void tick() /*override*/;
255
256 virtual void runEvents() /*override*/;
257
258 virtual void closeNetworkConnection(::NetworkIdentifier const& id) /*override*/;
259
260 virtual bool setApplicationHandshakeCompleted(::NetworkIdentifier const& id) /*override*/;
261
262 virtual bool isServer() const /*override*/;
263
264 virtual ::std::string getLocalIp() /*override*/;
265
266 virtual ushort getPort() const /*override*/;
267
268 virtual ::Social::GameConnectionInfo const& getConnectedGameInfo() const /*override*/;
269
270 virtual bool isIPv4Supported() const /*override*/;
271
272 virtual bool isIPv6Supported() const /*override*/;
273
274 virtual ushort getIPv4Port() const /*override*/;
275
276 virtual ushort getIPv6Port() const /*override*/;
277
278 virtual ::NetworkIdentifier getNetworkIdentifier() const /*override*/;
279
280 virtual ::RakNet::RakPeerInterface* getPeer();
281
282 virtual ::RakNet::RakPeerInterface const* getPeer() const;
283
284 virtual ::TransportLayer getNetworkType() const /*override*/;
285
286 virtual void setDisableLanSignaling(bool) /*override*/;
287
288 virtual void _onDisable() /*override*/;
289
290 virtual void _onEnable() /*override*/;
291 // NOLINTEND
292
293public:
294 // member functions
295 // NOLINTBEGIN
296 MCAPI RakNetConnector(
297 ::RakNetConnector::ConnectionCallbacks& callbacks,
298 ::RakPeerHelper::IPSupportInterface& ipInterface,
299 ::Bedrock::NonOwnerPointer<::AppPlatform> const& appPlatform,
300 ::RakNet::RakPeerConfiguration const& rakPeerConfig
301 );
302
303 MCAPI ::std::vector<::std::string> _getLocalIps() const;
304
305 MCAPI ::std::vector<::RakNet::SystemAddress> _getRefinedLocalIps() const;
306
307 MCAPI void _storeLocalIP();
308
309#ifdef LL_PLAT_C
310 MCAPI void
311 getPingTimeForConnection(::std::string const& address, int port, ::std::function<void(uint)> pingTimeCallback);
312#endif
313
314 MCAPI bool getStatistics(::RakNet::RakNetStatistics& rns);
315 // NOLINTEND
316
317public:
318 // constructor thunks
319 // NOLINTBEGIN
320 MCAPI void* $ctor(
324 ::RakNet::RakPeerConfiguration const& rakPeerConfig
325 );
326 // NOLINTEND
327
328public:
329 // destructor thunk
330 // NOLINTBEGIN
331 MCAPI void $dtor();
332 // NOLINTEND
333
334public:
335 // virtual function thunks
336 // NOLINTBEGIN
337 MCAPI bool $host(::ConnectionDefinition const& definition);
338
339 MCAPI bool $connect(
340 ::Social::GameConnectionInfo const& primaryConnection,
341 ::Social::GameConnectionInfo const& backupConnection
342 );
343
344 MCAPI void $disconnect();
345
346 MCAPI void $tick();
347
348 MCAPI void $runEvents();
349
350 MCAPI void $closeNetworkConnection(::NetworkIdentifier const& id);
351
352 MCAPI bool $setApplicationHandshakeCompleted(::NetworkIdentifier const& id);
353
354 MCFOLD bool $isServer() const;
355
356 MCAPI ::std::string $getLocalIp();
357
358 MCAPI ushort $getPort() const;
359
360 MCAPI ::Social::GameConnectionInfo const& $getConnectedGameInfo() const;
361
362 MCAPI bool $isIPv4Supported() const;
363
364 MCAPI bool $isIPv6Supported() const;
365
366 MCAPI ushort $getIPv4Port() const;
367
368 MCAPI ushort $getIPv6Port() const;
369
370 MCAPI ::NetworkIdentifier $getNetworkIdentifier() const;
371
372 MCFOLD ::RakNet::RakPeerInterface* $getPeer();
373
374 MCFOLD ::RakNet::RakPeerInterface const* $getPeer() const;
375
376 MCFOLD ::TransportLayer $getNetworkType() const;
377
378 MCFOLD void $setDisableLanSignaling(bool);
379
380 MCAPI void $_onDisable();
381
382 MCAPI void $_onEnable();
383
384
385 // NOLINTEND
386
387public:
388 // vftables
389 // NOLINTBEGIN
390 MCNAPI static void** $vftableForConnector();
391
393
395 // NOLINTEND
396};
Definition AppPlatform.h:91
Definition NonOwnerPointer.h:9
Definition MPMCQueue.h:6
Definition NetworkIdentifier.h:10
Definition NetworkPeer.h:8
Definition RakNetConnector.h:106
static MCAPI void ** $vftable()
static MCAPI void ** $vftableForConnector()
static MCAPI void ** $vftableForNetworkEnableDisableListener()
static MCAPI void ** $vftableForEnableNonOwnerReferences()
Definition RakPeerInterface.h:32
Definition RakPeerHelper.h:35
Definition RakPeerHelper.h:15
Definition RemoteConnector.h:19
Definition GameConnectionInfo.h:23
STL namespace.
Definition ConnectionDefinition.h:5
Definition Connector.h:25
Definition NetworkPeer.h:36
Definition RakNetConnector.h:39
static MCAPI void ** $vftable()
Definition RakNetConnector.h:73
Definition RakNetStatistics.h:7
Definition RakPeerConfiguration.h:7
Definition SystemAddress.h:7