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