LeviLamina
Loading...
Searching...
No Matches
NetherNetConnector.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/cereal/ContextArea.h"
7#include "mc/deps/nether_net/ESessionError.h"
8#include "mc/deps/nether_net/INetherNetTransportInterfaceCallbacks.h"
9#include "mc/deps/nether_net/NetworkID.h"
10#include "mc/network/Connector.h"
11#include "mc/network/RemoteConnector.h"
12#include "mc/network/TransportLayer.h"
13#include "mc/platform/brstd/move_only_function.h"
14#include "mc/platform/threading/UniqueLock.h"
15
16// auto generated forward declare list
17// clang-format off
23namespace Bedrock::Http { class LibHttpClientInstance; }
24namespace Json { class Value; }
25namespace NetherNet { class IIdentityAssertionGenerator; }
26namespace NetherNet { class INetherNetTransportInterface; }
27namespace Social { class GameConnectionInfo; }
28namespace cereal { struct SchemaWriter; }
29// clang-format on
30
32public:
33 // NetherNetConnector inner types declare
34 // clang-format off
35 struct DisconnectEvent;
38 // clang-format on
39
40 // NetherNetConnector inner types define
41 struct DisconnectEvent {
42 public:
43 // member variables
44 // NOLINTBEGIN
49 // NOLINTEND
50
51 public:
52 // prevent constructor by default
53 DisconnectEvent& operator=(DisconnectEvent const&);
54 DisconnectEvent(DisconnectEvent const&);
55 DisconnectEvent();
56 };
57
58 struct NewIncomingConnectionEvent {
59 public:
60 // member variables
61 // NOLINTBEGIN
63 // NOLINTEND
64
65 public:
66 // prevent constructor by default
67 NewIncomingConnectionEvent& operator=(NewIncomingConnectionEvent const&);
68 NewIncomingConnectionEvent(NewIncomingConnectionEvent const&);
69 NewIncomingConnectionEvent();
70 };
71
72 struct NewOutgoingConnectionEvent {
73 public:
74 // member variables
75 // NOLINTBEGIN
77 // NOLINTEND
78
79 public:
80 // prevent constructor by default
81 NewOutgoingConnectionEvent& operator=(NewOutgoingConnectionEvent const&);
82 NewOutgoingConnectionEvent(NewOutgoingConnectionEvent const&);
83 NewOutgoingConnectionEvent();
84 };
85
86 using BroadcastRequestCallback = ::brstd::move_only_function<
88
89 using BroadcastResponseCallback = ::std::function<void(::NetherNet::NetworkID const&, void const*, int)>;
90
91 using Event = ::std::variant<
95
97
98public:
99 // member variables
100 // NOLINTBEGIN
101 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Bedrock::Http::LibHttpClientInstance> const> mHttpLibrary;
102 ::ll::TypedStorage<8, 24, ::NetherNet::NetworkID const> mNetworkID;
103 ::ll::TypedStorage<
104 8,
105 72,
106 ::std::unique_ptr<
108 ::std::function<void(::NetherNet::INetherNetTransportInterface*)>>>
109 mTransport;
110 ::ll::TypedStorage<8, 80, ::std::mutex> mBroadcastCallbackMutex;
111 ::ll::TypedStorage<
112 8,
113 64,
116 mBroadcastRequestCallback;
117 ::ll::TypedStorage<8, 64, ::std::function<void(::NetherNet::NetworkID const&, void const*, int)>>
118 mBroadcastResponseCallback;
119 ::ll::TypedStorage<8, 80, ::std::recursive_mutex> mEventsMutex;
120 ::ll::TypedStorage<
121 8,
122 8,
123 ::std::unique_ptr<::std::vector<::std::variant<
127 mEvents;
128 ::ll::TypedStorage<8, 24, ::std::vector<::std::weak_ptr<::WebRTCNetworkPeer>>> mPeers;
129 // NOLINTEND
130
131public:
132 // prevent constructor by default
133 NetherNetConnector();
134
135public:
136 // virtual functions
137 // NOLINTBEGIN
138 virtual ~NetherNetConnector() /*override*/;
139
140 virtual bool closeSessionWithUser(::NetherNet::NetworkID remoteId, uint64 sessionId);
141
142 virtual void setDisableLanSignaling(bool disableLanSignaling) /*override*/;
143
144 virtual bool host(::ConnectionDefinition const& definition, ::PrivateKeyManager const& keys) /*override*/;
145
146#ifdef LL_PLAT_S
147 virtual bool connect(
150 ::std::shared_ptr<::NetherNet::IIdentityAssertionGenerator>
151 ) /*override*/;
152#else // LL_PLAT_C
153 virtual bool connect(
154 ::Social::GameConnectionInfo const& primaryConnection,
155 ::Social::GameConnectionInfo const& backupConnection,
156 ::std::shared_ptr<::NetherNet::IIdentityAssertionGenerator> identityGenerator
157 ) /*override*/;
158#endif
159
160 virtual void tick() /*override*/;
161
162 virtual void runEvents() /*override*/;
163
164 virtual ::NetworkIdentifier getNetworkIdentifier() const /*override*/;
165
166 virtual void closeNetworkConnection(::NetworkIdentifier const&) /*override*/;
167
168 virtual bool setApplicationHandshakeCompleted(::NetworkIdentifier const&) /*override*/;
169
170 virtual ::TransportLayer getNetworkType() const /*override*/;
171
172 virtual void _onDisable() /*override*/;
173
174 virtual void _onEnable() /*override*/;
175
176 virtual void OnSpopViolation() /*override*/;
177
178 virtual void OnSessionClose(
179 ::NetherNet::NetworkID networkID,
180 uint64 sessionId,
181 ::NetherNet::ESessionError sessionError,
182 ::Json::Value summary
183 ) /*override*/;
184
185 virtual void
186 OnDiscoveryResponse(::NetherNet::NetworkID networkID, void const* pApplicationData, int size) /*override*/;
187
188 virtual ::brstd::move_only_function<bool(::cereal::SchemaWriter&, ::cereal::ContextArea)>
189 OnDiscoveryRequest() /*override*/;
190
191 virtual void OnSessionGetConnectionFlags(::NetherNet::NetworkID, uint* flags) /*override*/;
192 // NOLINTEND
193
194public:
195 // member functions
196 // NOLINTBEGIN
197 MCAPI NetherNetConnector(
198 ::NetherNetTransportFactory const& factory,
199 ::Connector::ConnectionCallbacks& callbacks,
200 ::std::optional<::NetherNet::NetworkID> networkId
201 );
202
203#ifdef LL_PLAT_C
204 MCAPI void _createEventQueue();
205
206 MCAPI ::gsl::not_null<::std::shared_ptr<::WebRTCNetworkPeer>> _getOrCreatePeer(
207 ::NetherNet::NetworkID const& remoteId,
208 uint64 sessionId,
209 bool isLan,
211 );
212#endif
213
214 MCAPI void setBroadcastResponseCallback(
215 ::std::function<void(::NetherNet::NetworkID const&, void const*, int)>&& broadcastResponseCallback
216 );
217 // NOLINTEND
218
219public:
220 // constructor thunks
221 // NOLINTBEGIN
222 MCAPI void* $ctor(
223 ::NetherNetTransportFactory const& factory,
225 ::std::optional<::NetherNet::NetworkID> networkId
226 );
227 // NOLINTEND
228
229public:
230 // destructor thunk
231 // NOLINTBEGIN
232 MCAPI void $dtor();
233 // NOLINTEND
234
235public:
236 // virtual function thunks
237 // NOLINTBEGIN
238 MCAPI bool $closeSessionWithUser(::NetherNet::NetworkID remoteId, uint64 sessionId);
239
240 MCAPI void $setDisableLanSignaling(bool disableLanSignaling);
241
242 MCFOLD bool $host(::ConnectionDefinition const& definition, ::PrivateKeyManager const& keys);
243
244#ifdef LL_PLAT_S
245 MCAPI bool $connect(
248 ::std::shared_ptr<::NetherNet::IIdentityAssertionGenerator>
249 );
250#else // LL_PLAT_C
251 MCAPI bool $connect(
252 ::Social::GameConnectionInfo const& primaryConnection,
253 ::Social::GameConnectionInfo const& backupConnection,
254 ::std::shared_ptr<::NetherNet::IIdentityAssertionGenerator> identityGenerator
255 );
256#endif
257
258 MCFOLD void $tick();
259
260 MCAPI void $runEvents();
261
262 MCAPI ::NetworkIdentifier $getNetworkIdentifier() const;
263
264 MCFOLD void $closeNetworkConnection(::NetworkIdentifier const&);
265
266 MCFOLD bool $setApplicationHandshakeCompleted(::NetworkIdentifier const&);
267
268 MCFOLD ::TransportLayer $getNetworkType() const;
269
270 MCFOLD void $_onDisable();
271
272 MCFOLD void $_onEnable();
273
274 MCFOLD void $OnSpopViolation();
275
276 MCAPI void $OnSessionClose(
277 ::NetherNet::NetworkID networkID,
278 uint64 sessionId,
279 ::NetherNet::ESessionError sessionError,
280 ::Json::Value summary
281 );
282
283 MCAPI void $OnDiscoveryResponse(::NetherNet::NetworkID networkID, void const* pApplicationData, int size);
284
285 MCAPI ::brstd::move_only_function<bool(::cereal::SchemaWriter&, ::cereal::ContextArea)> $OnDiscoveryRequest();
286
287 MCAPI void $OnSessionGetConnectionFlags(::NetherNet::NetworkID, uint* flags);
288
289
290 // NOLINTEND
291};
Definition LibHttpClientInstance.h:10
Definition UniqueLock.h:8
Definition Value.h:16
Definition NetherNetTransportFactory.h:13
Definition IIdentityAssertionGenerator.h:7
Definition INetherNetTransportInterfaceCallbacks.h:20
Definition INetherNetTransportInterface.h:22
Definition NetworkIdentifier.h:10
Definition PrivateKeyManager.h:10
Definition RemoteConnector.h:21
MCAPI void $dtor()
Definition GameConnectionInfo.h:24
Definition WebRTCNetworkPeer.h:16
Definition move_only_function.h:9
STL namespace.
Definition ConnectionDefinition.h:5
Definition Connector.h:26
Definition NetherNetConnector.h:41
Definition NetherNetConnector.h:58
Definition NetherNetConnector.h:72
Definition NetworkID.h:17
Definition SchemaWriter.h:16
Definition Alias.h:14