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