Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
PayloadService.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/pub_sub/Publisher.h"
7#include "mc/deps/script_core/runtime/scripting/Result_deprecated.h"
8#include "mc/editor/selection/PayloadServiceProvider.h"
9#include "mc/editor/services/IEditorService.h"
10
11// auto generated forward declare list
12// clang-format off
13class Actor;
14class DebuggerStat;
16class PacketSender;
17class WeakEntityRef;
18namespace Bedrock::PubSub { class Subscription; }
19namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
20namespace Editor { class ServiceProviderCollection; }
21namespace Editor::Network { class INetworkPayload; }
22namespace Editor::Network { struct PayloadMetrics; }
23namespace Editor::Network { struct PayloadSenderContext; }
24namespace mce { class UUID; }
25// clang-format on
26
27namespace Editor::Network {
28
30public:
31 // PayloadService inner types declare
32 // clang-format off
33 struct CachedPacket;
34 struct DeferredSend;
35 struct PayloadFactory;
36 struct PayloadPublisher;
37 struct PayloadInfo;
38 // clang-format on
39
40 // PayloadService inner types define
41 enum class SendTarget : int {
42 ServerPlayer = 0,
43 ClientPlayer = 1,
44 ServerManager = 2,
45 ClientManager = 3,
46 BroadcastToClientPlayers = 4,
47 BroadcastToClientManagers = 5,
48 };
49
50 struct CachedPacket {
51 public:
52 // member variables
53 // NOLINTBEGIN
58 // NOLINTEND
59
60 public:
61 // prevent constructor by default
62 CachedPacket& operator=(CachedPacket const&);
63 CachedPacket(CachedPacket const&);
64 CachedPacket();
65 };
66
67 struct DeferredSend {
68 public:
69 // member variables
70 // NOLINTBEGIN
78 // NOLINTEND
79
80 public:
81 // prevent constructor by default
82 DeferredSend& operator=(DeferredSend const&);
83 DeferredSend(DeferredSend const&);
84 DeferredSend();
85 };
86
87 struct PayloadFactory {
88 public:
89 // member variables
90 // NOLINTBEGIN
92 // NOLINTEND
93
94 public:
95 // prevent constructor by default
96 PayloadFactory& operator=(PayloadFactory const&);
97 PayloadFactory(PayloadFactory const&);
98 PayloadFactory();
99 };
100
101 struct PayloadPublisher {
102 public:
103 // member variables
104 // NOLINTBEGIN
107 // NOLINTEND
108
109 public:
110 // prevent constructor by default
111 PayloadPublisher& operator=(PayloadPublisher const&);
112 PayloadPublisher(PayloadPublisher const&);
113 PayloadPublisher();
114 };
115
116 struct PayloadInfo {
117 public:
118 // member variables
119 // NOLINTBEGIN
124 // NOLINTEND
125
126 public:
127 // prevent constructor by default
128 PayloadInfo& operator=(PayloadInfo const&);
129 PayloadInfo(PayloadInfo const&);
130 PayloadInfo();
131 };
132
133public:
134 // member variables
135 // NOLINTBEGIN
147 // NOLINTEND
148
149public:
150 // prevent constructor by default
151 PayloadService& operator=(PayloadService const&);
152 PayloadService(PayloadService const&);
153 PayloadService();
154
155public:
156 // virtual functions
157 // NOLINTBEGIN
158 virtual ~PayloadService() /*override*/ = default;
159
160 virtual ::Scripting::Result_deprecated<void> init() /*override*/;
161
162 virtual ::Scripting::Result_deprecated<void> quit() /*override*/;
163
164 virtual ::std::string_view getServiceName() const /*override*/;
165
166 virtual ::Scripting::Result_deprecated<void>
167 dispatchToSelf(::Editor::Network::INetworkPayload& payload) /*override*/;
168
169 virtual void onReceivePayload(::EditorNetworkPacket const& packet) /*override*/;
170
171 virtual void onReceivePayload(
172 ::EditorNetworkPacket const& packet,
173 ::Editor::Network::PayloadSenderContext const& sender
174 ) /*override*/;
175
176 virtual void flushDeferred(uint64 coalesceKey) /*override*/;
177
178 virtual bool isCollectingMetrics() const /*override*/;
179
180 virtual void clearMetrics() /*override*/;
181
182 virtual void setCollectingMetrics(bool collecting) /*override*/;
183
184 virtual ::std::vector<::std::pair<::std::string, ::Editor::Network::PayloadMetrics>> collectMetricsReport() const
185 /*override*/;
186
187 virtual ::Editor::Network::PayloadMetrics* _registerPayload(
188 char const* payloadName,
189 ::std::function<::std::shared_ptr<::Editor::Network::INetworkPayload>()> constructorFunc
190 ) /*override*/;
191
192 virtual ::Scripting::Result_deprecated<void>
193 _send(::Editor::Network::INetworkPayload& payload, ::Editor::Network::PayloadMetrics* metrics) /*override*/;
194
195 virtual ::Scripting::Result_deprecated<void> _sendDeferred(
196 ::std::shared_ptr<::Editor::Network::INetworkPayload> payload,
197 uint64 coalesceKey,
198 ::Editor::Network::PayloadMetrics* metrics
199 ) /*override*/;
200
201 virtual ::Scripting::Result_deprecated<void> _sendToManager(
202 ::Editor::Network::INetworkPayload& payload,
203 ::Editor::Network::PayloadMetrics* metrics
204 ) /*override*/;
205
206 virtual ::Scripting::Result_deprecated<void> _sendToClientId(
207 ::mce::UUID const& clientId,
208 ::Editor::Network::INetworkPayload& payload,
209 ::Editor::Network::PayloadMetrics* metrics
210 ) /*override*/;
211
212 virtual ::Scripting::Result_deprecated<void> _sendToClientIds(
213 ::std::vector<::mce::UUID> const& clientIds,
214 ::Editor::Network::INetworkPayload& payload,
215 ::Editor::Network::PayloadMetrics* metrics
216 ) /*override*/;
217
218 virtual ::Scripting::Result_deprecated<void> _broadcastToClients(
219 ::Editor::Network::INetworkPayload& payload,
220 ::Editor::Network::PayloadMetrics* metrics
221 ) /*override*/;
222
223 virtual ::Scripting::Result_deprecated<void> _broadcastToClientManagers(
224 ::Editor::Network::INetworkPayload& payload,
225 ::Editor::Network::PayloadMetrics* metrics
226 ) /*override*/;
227
228 virtual ::Scripting::Result_deprecated<::Bedrock::PubSub::Subscription> _listenFor(
229 char const* payloadName,
230 ::std::function<void(::Editor::Network::INetworkPayload const&)> fnSubscriber
231 ) /*override*/;
232
233 virtual ::Scripting::Result_deprecated<::Bedrock::PubSub::Subscription> _listenForWithSender(
234 char const* payloadName,
235 ::std::function<void(::Editor::Network::INetworkPayload const&, ::Editor::Network::PayloadSenderContext const&)>
236 fnSubscriber
237 ) /*override*/;
238 // NOLINTEND
239
240public:
241 // member functions
242 // NOLINTBEGIN
243 MCNAPI PayloadService(
244 ::Editor::ServiceProviderCollection& providers,
245 ::WeakEntityRef optionalPlayerRef,
246 ::PacketSender& packetSender,
247 bool isClientSide,
248 bool collectMetrics
249 );
250
252 ::std::vector<::Actor*> const& actors,
253 ::EditorNetworkPacket& packet,
254 ::Editor::Network::PayloadMetrics* metrics
255 );
256
257 MCNAPI void _collectScriptStats(::DebuggerStat& editorNetworkStats);
258
259 MCNAPI ::std::vector<::Actor*> _getEditorClientActors() const;
260
261 MCNAPI ::std::shared_ptr<::Editor::Network::INetworkPayload>
263
264 MCNAPI ::Scripting::Result_deprecated<::EditorNetworkPacket> _populatePacket(
265 ::Editor::Network::INetworkPayload* payload,
266 ::Editor::Network::PayloadService::SendTarget const target,
267 ::Editor::Network::PayloadMetrics* metrics
268 );
269
270 MCNAPI void _pump();
271
272 MCNAPI void _sendCachedPacketToTarget(::Editor::Network::PayloadService::CachedPacket& packet);
273
274 MCNAPI ::Scripting::Result_deprecated<void> _sendToClient(
275 ::Editor::Network::INetworkPayload& payload,
276 ::Editor::Network::PayloadService::SendTarget target,
277 ::Editor::Network::PayloadMetrics* metrics
278 );
279
280 MCNAPI ::Scripting::Result_deprecated<void> _sendToClientTargets(
281 ::std::vector<::Actor*> actorList,
282 ::EditorNetworkPacket& outPacket,
283 ::Editor::Network::PayloadMetrics* metrics
284 );
285
286 MCNAPI ::Scripting::Result_deprecated<void> _sendToServer(
287 ::Editor::Network::INetworkPayload& payload,
288 ::Editor::Network::PayloadService::SendTarget target,
289 ::Editor::Network::PayloadMetrics* metrics
290 );
291
292 MCNAPI ::Scripting::Result_deprecated<void> _sendToTarget(
293 ::Actor* actor,
294 ::EditorNetworkPacket& outPacket,
295 ::Editor::Network::PayloadService::SendTarget toWhom,
296 ::Editor::Network::PayloadMetrics* metrics
297 );
298 // NOLINTEND
299
300public:
301 // constructor thunks
302 // NOLINTBEGIN
303 MCNAPI void* $ctor(
304 ::Editor::ServiceProviderCollection& providers,
305 ::WeakEntityRef optionalPlayerRef,
306 ::PacketSender& packetSender,
307 bool isClientSide,
308 bool collectMetrics
309 );
310 // NOLINTEND
311
312public:
313 // virtual function thunks
314 // NOLINTBEGIN
315 MCNAPI ::Scripting::Result_deprecated<void> $init();
316
317 MCNAPI ::Scripting::Result_deprecated<void> $quit();
318
319 MCNAPI ::std::string_view $getServiceName() const;
320
321 MCNAPI ::Scripting::Result_deprecated<void> $dispatchToSelf(::Editor::Network::INetworkPayload& payload);
322
323 MCNAPI void $onReceivePayload(::EditorNetworkPacket const& packet);
324
325 MCNAPI void
326 $onReceivePayload(::EditorNetworkPacket const& packet, ::Editor::Network::PayloadSenderContext const& sender);
327
328 MCNAPI void $flushDeferred(uint64 coalesceKey);
329
330 MCNAPI bool $isCollectingMetrics() const;
331
332 MCNAPI void $clearMetrics();
333
334 MCNAPI void $setCollectingMetrics(bool collecting);
335
336 MCNAPI ::std::vector<::std::pair<::std::string, ::Editor::Network::PayloadMetrics>> $collectMetricsReport() const;
337
338 MCNAPI ::Editor::Network::PayloadMetrics* $_registerPayload(
339 char const* payloadName,
340 ::std::function<::std::shared_ptr<::Editor::Network::INetworkPayload>()> constructorFunc
341 );
342
343 MCNAPI ::Scripting::Result_deprecated<void>
344 $_send(::Editor::Network::INetworkPayload& payload, ::Editor::Network::PayloadMetrics* metrics);
345
346 MCNAPI ::Scripting::Result_deprecated<void> $_sendDeferred(
347 ::std::shared_ptr<::Editor::Network::INetworkPayload> payload,
348 uint64 coalesceKey,
349 ::Editor::Network::PayloadMetrics* metrics
350 );
351
352 MCNAPI ::Scripting::Result_deprecated<void>
353 $_sendToManager(::Editor::Network::INetworkPayload& payload, ::Editor::Network::PayloadMetrics* metrics);
354
355 MCNAPI ::Scripting::Result_deprecated<void> $_sendToClientId(
356 ::mce::UUID const& clientId,
357 ::Editor::Network::INetworkPayload& payload,
358 ::Editor::Network::PayloadMetrics* metrics
359 );
360
361 MCNAPI ::Scripting::Result_deprecated<void> $_sendToClientIds(
362 ::std::vector<::mce::UUID> const& clientIds,
363 ::Editor::Network::INetworkPayload& payload,
364 ::Editor::Network::PayloadMetrics* metrics
365 );
366
367 MCNAPI ::Scripting::Result_deprecated<void>
368 $_broadcastToClients(::Editor::Network::INetworkPayload& payload, ::Editor::Network::PayloadMetrics* metrics);
369
370 MCNAPI ::Scripting::Result_deprecated<void> $_broadcastToClientManagers(
371 ::Editor::Network::INetworkPayload& payload,
372 ::Editor::Network::PayloadMetrics* metrics
373 );
374
375 MCNAPI ::Scripting::Result_deprecated<::Bedrock::PubSub::Subscription>
376 $_listenFor(char const* payloadName, ::std::function<void(::Editor::Network::INetworkPayload const&)> fnSubscriber);
377
378 MCNAPI ::Scripting::Result_deprecated<::Bedrock::PubSub::Subscription> $_listenForWithSender(
379 char const* payloadName,
380 ::std::function<void(::Editor::Network::INetworkPayload const&, ::Editor::Network::PayloadSenderContext const&)>
381 fnSubscriber
382 );
383
384
385 // NOLINTEND
386};
387
388} // namespace Editor::Network
Definition Actor.h:116
Definition Subscription.h:10
Definition DebuggerStat.h:10
Definition EditorNetworkPacket.h:19
Definition INetworkPayload.h:7
Definition PayloadServiceProvider.h:20
MCAPI ::Scripting::Result_deprecated< void > _sendToClientTargets(::std::vector<::Actor * > actorList, ::EditorNetworkPacket &outPacket, ::Editor::Network::PayloadMetrics *metrics)
MCAPI void $flushDeferred(uint64 coalesceKey)
MCAPI ::Scripting::Result_deprecated<::Bedrock::PubSub::Subscription > $_listenForWithSender(char const *payloadName, ::std::function< void(::Editor::Network::INetworkPayload const &, ::Editor::Network::PayloadSenderContext const &)> fnSubscriber)
MCAPI ::Scripting::Result_deprecated< void > $_broadcastToClients(::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadMetrics *metrics)
MCAPI::std::string_view $getServiceName() const
MCAPI ::Scripting::Result_deprecated< void > $quit()
MCAPI ::std::vector<::Actor * > _getEditorClientActors() const
MCAPI ::Scripting::Result_deprecated< void > _sendToServer(::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadService::SendTarget target, ::Editor::Network::PayloadMetrics *metrics)
MCAPI ::Scripting::Result_deprecated< void > _sendToClient(::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadService::SendTarget target, ::Editor::Network::PayloadMetrics *metrics)
MCAPI ::Scripting::Result_deprecated<::EditorNetworkPacket > _populatePacket(::Editor::Network::INetworkPayload *payload, ::Editor::Network::PayloadService::SendTarget const target, ::Editor::Network::PayloadMetrics *metrics)
MCAPI ::Scripting::Result_deprecated< void > $_send(::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadMetrics *metrics)
MCAPI ::std::vector<::std::pair<::std::string, ::Editor::Network::PayloadMetrics > > $collectMetricsReport() const
MCAPI ::std::shared_ptr<::Editor::Network::INetworkPayload > _loadReceivedPayload(::EditorNetworkPacket const &packet)
MCAPI bool $isCollectingMetrics() const
MCAPI ::Scripting::Result_deprecated< void > $_sendDeferred(::std::shared_ptr<::Editor::Network::INetworkPayload > payload, uint64 coalesceKey, ::Editor::Network::PayloadMetrics *metrics)
MCAPI ::Scripting::Result_deprecated< void > _sendToTarget(::Actor *actor, ::EditorNetworkPacket &outPacket, ::Editor::Network::PayloadService::SendTarget toWhom, ::Editor::Network::PayloadMetrics *metrics)
MCAPI void _buildRecipientListAndSend(::std::vector<::Actor * > const &actors, ::EditorNetworkPacket &packet, ::Editor::Network::PayloadMetrics *metrics)
MCAPI void _sendCachedPacketToTarget(::Editor::Network::PayloadService::CachedPacket &packet)
MCAPI ::Scripting::Result_deprecated<::Bedrock::PubSub::Subscription > $_listenFor(char const *payloadName, ::std::function< void(::Editor::Network::INetworkPayload const &)> fnSubscriber)
MCAPI ::Scripting::Result_deprecated< void > $_sendToManager(::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadMetrics *metrics)
MCAPI ::Scripting::Result_deprecated< void > $_sendToClientId(::mce::UUID const &clientId, ::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadMetrics *metrics)
MCAPI void $setCollectingMetrics(bool collecting)
MCAPI ::Scripting::Result_deprecated< void > $init()
MCAPI::Editor::Network::PayloadMetrics * $_registerPayload(char const *payloadName, ::std::function<::std::shared_ptr<::Editor::Network::INetworkPayload >()> constructorFunc)
MCAPI ::Scripting::Result_deprecated< void > $dispatchToSelf(::Editor::Network::INetworkPayload &payload)
MCAPI void $onReceivePayload(::EditorNetworkPacket const &packet)
MCAPI ::Scripting::Result_deprecated< void > $_broadcastToClientManagers(::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadMetrics *metrics)
MCAPI void * $ctor(::Editor::ServiceProviderCollection &providers, ::WeakEntityRef optionalPlayerRef, ::PacketSender &packetSender, bool isClientSide, bool collectMetrics)
MCAPI void _collectScriptStats(::DebuggerStat &editorNetworkStats)
MCAPI ::Scripting::Result_deprecated< void > $_sendToClientIds(::std::vector<::mce::UUID > const &clientIds, ::Editor::Network::INetworkPayload &payload, ::Editor::Network::PayloadMetrics *metrics)
Definition ServiceProviderCollection.h:7
Definition IEditorService.h:11
Definition PacketSender.h:17
Definition ServerPlayer.h:73
Definition WeakEntityRef.h:14
Definition UUID.h:8
STL namespace.
Definition PayloadMetrics.h:7
Definition PayloadSenderContext.h:7
Definition PayloadService.h:50
Definition PayloadService.h:67
Definition PayloadService.h:116
Definition Alias.h:14