LeviLamina
Loading...
Searching...
No Matches
TaskGroup.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/file/PathBuffer.h"
7#include "mc/deps/core/threading/Async.h"
8#include "mc/deps/core/threading/IBackgroundTaskOwner.h"
9#include "mc/deps/core/threading/SharedAsync.h"
10#include "mc/deps/core/threading/TaskGroupState.h"
11#include "mc/deps/core/utility/NonOwnerPointer.h"
12#include "mc/deps/nether_net/ESessionError.h"
13#include "mc/deps/services/Discriminated.h"
14#include "mc/editor/services/playtest/SessionResult.h"
15#include "mc/network/services/signaling/ISignalingServiceConfigProvider.h"
16#include "mc/platform/ErrorInfo.h"
17#include "mc/platform/Result.h"
18#include "mc/platform/brstd/copyable_function.h"
19#include "mc/platform/brstd/move_only_function.h"
20#include "mc/platform/brstd/promise.h"
21#include "mc/platform/threading/UniqueLock.h"
22#include "mc/server/commands/edu/make_code_fileio/MakeCodeFileResult.h"
23#include "mc/world/level/FileArchiver.h"
24
25// auto generated forward declare list
26// clang-format off
29class Pack;
30class ResourcePack;
31class Scheduler;
32class TaskResult;
33class WebKey;
34class WorkerPool;
36struct AsyncJoinAllow;
37struct AsyncJoinDeny;
43struct TaskStartInfo;
44namespace Bedrock::Http { class HeaderCollection; }
45namespace Bedrock::Http { class Request; }
46namespace Bedrock::Http { class Response; }
47namespace Bedrock::Http { struct Url; }
48namespace Bedrock::Services { struct AzureGetTokenHttpResponse; }
49namespace Bedrock::Services { struct EnvironmentQueryResponse; }
50namespace Bedrock::Services { struct ServiceError; }
51namespace Bedrock::Services::discovery::model { struct EnvironmentQueryResponseData; }
52namespace Bedrock::Services::discovery::model { struct ManagedServiceEnvironmentMetadata; }
53namespace Bedrock::Services::gatherings::model { struct CheckPartyEligibilityResponseData; }
54namespace Bedrock::Services::gatherings::model { struct ExperiencePlayerCountResponseData; }
55namespace Bedrock::Services::gatherings::model { struct GetAllExperienceDiscoveryMetadataResponseData; }
56namespace Bedrock::Services::gatherings::model { struct JoinResponseData; }
57namespace Bedrock::Services::layout::model { struct BulkFabsResponseData; }
58namespace Bedrock::Services::layout::model { struct FabChildren; }
59namespace Bedrock::Services::layout::model { struct LayoutResponseData; }
60namespace Bedrock::Services::layout::model { struct PageableDataBase; }
61namespace Bedrock::Services::layout::model { struct PageableExperiences; }
62namespace Bedrock::Services::layout::model { struct PageableStandardMarketplaceItemPreview; }
63namespace Bedrock::Services::layout::model { struct SessionConfig; }
64namespace Bedrock::Services::multiplayer::model { struct Party; }
65namespace Bedrock::Services::multiplayer::model { struct PartyInvite; }
66namespace Bedrock::Services::multiplayer::model { struct PartySummary; }
67namespace Bedrock::Services::safety::model { struct RoomResponseData; }
68namespace Bedrock::Services::safety::model { struct ScanResponseData; }
69namespace Bedrock::Services::safety_client::model { struct ImageValidationResult; }
70namespace Bedrock::Services::safety_client::model { struct SkinValidationResult; }
71namespace Bedrock::Services::safety_client::model { struct TextValidationResult; }
72namespace Bedrock::Threading { struct CachedAsyncRetry; }
73namespace Json { class Value; }
74namespace JsonRpc { class JsonRpcError; }
75namespace JsonRpc { class TurnConfigResult; }
76namespace MakeCodeFileIO { struct MakeCodeFileIOReadResult; }
77namespace PackCommand { struct PackCommandResult; }
78namespace RepositoryLoading { struct PackModifications; }
79namespace Safety { struct TextFilterResult; }
80namespace Social::Events { class Event; }
81namespace DedicatedServerInitialization { struct DedicatedServerInitResult; }
82namespace DedicatedServerInitialization { struct NetworkSystemDep; }
83namespace DedicatedServerInitialization { struct ServerInstanceDep; }
84// clang-format on
85
86class TaskGroup : public ::IBackgroundTaskOwner {
87public:
88 // TaskGroup inner types declare
89 // clang-format off
90 template<typename T0> class ThenableBase;
91 class unordered_map;
92 // clang-format on
93
94 // TaskGroup inner types define
95 template <typename T0>
96 class ThenableBase {};
97
98 class unordered_map {};
99
100public:
101 // member variables
102 // NOLINTBEGIN
103 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::Scheduler>> mScheduler;
104 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::WorkerPool>> mWorkers;
105 ::ll::TypedStorage<8, 32, ::std::string> mName;
106 ::ll::TypedStorage<1, 1, bool> mCheckOwnerThread;
107 ::ll::TypedStorage<8, 80, ::std::mutex> mLock;
108 ::ll::TypedStorage<4, 4, ::std::atomic<::TaskGroupState>> mState;
109 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::BackgroundTaskBase>> mTasks;
110 ::ll::TypedStorage<8, 8, uint64> mTaskCount;
111 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::BackgroundTaskBase>> mEnumCurr;
112 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::BackgroundTaskBase>> mEnumNext;
113 ::ll::TypedStorage<8, 16, ::Bedrock::Threading::Async<void>> mResumeTaskHandle;
114 ::ll::TypedStorage<8, 80, ::std::mutex> mResumeTaskMutex;
115 // NOLINTEND
116
117public:
118 LLNDAPI static ::IBackgroundTaskOwner* getCurrentTaskGroup();
119
120public:
121 // prevent constructor by default
122 TaskGroup();
123
124public:
125 // virtual functions
126 // NOLINTBEGIN
127 virtual ::Bedrock::Threading::Async<void> queue_DEPRECATED(
128 ::TaskStartInfo const& startInfo,
130 ::std::function<void()>&& callback
131 ) /*override*/;
132
133 virtual ::Bedrock::Threading::Async<void> queueSync_DEPRECATED(
134 ::TaskStartInfo const& startInfo,
136 ) /*override*/;
137
138 virtual ~TaskGroup() /*override*/;
139
140 virtual void taskRegister(::std::shared_ptr<::BackgroundTaskBase> task) /*override*/;
141
142 virtual void requeueTask(::std::shared_ptr<::BackgroundTaskBase> task, bool queueImmediate) /*override*/;
143
144 virtual ::TaskGroupState getState() const /*override*/;
145
146 virtual void processCoroutines() /*override*/;
147
148 virtual void taskComplete(::gsl::not_null<::BackgroundTaskBase*> task) /*override*/;
149
150 virtual bool _workerPoolIsAsync() const;
151 // NOLINTEND
152
153public:
154 // member functions
155 // NOLINTBEGIN
156 MCAPI TaskGroup(::WorkerPool& workers, ::Scheduler& context, ::std::string name);
157
158 MCAPI void _doWorkUntil(::Bedrock::Threading::SharedAsync<void> task, ::brstd::promise<void>* workStarted);
159
160 MCAPI void _forAllTasks(
161 ::Bedrock::Threading::UniqueLock<::std::mutex>& lock,
162 ::std::function<void(::std::shared_ptr<::BackgroundTaskBase> const&)> callback
163 );
164
165 MCAPI void _queueInternal(::std::shared_ptr<::BackgroundTaskBase> bgtask);
166
167#ifdef LL_PLAT_C
168 MCAPI uint64 count() const;
169#endif
170
171 MCAPI void flush(::std::function<void()> waitFn);
172
173 MCAPI bool isEmpty() const;
174
175 MCAPI void resume();
176 // NOLINTEND
177
178public:
179 // static functions
180 // NOLINTBEGIN
181 MCAPI static ::Bedrock::Threading::Async<void>
182 queueChildSync_DEPRECATED(::TaskStartInfo const& startInfo, ::brstd::move_only_function<::TaskResult()>&& task);
183
184 MCAPI static ::Bedrock::Threading::Async<void> queueChild_DEPRECATED(
185 ::TaskStartInfo const& startInfo,
187 ::std::function<void()>&& callback
188 );
189 // NOLINTEND
190
191public:
192 // constructor thunks
193 // NOLINTBEGIN
194 MCAPI void* $ctor(::WorkerPool& workers, ::Scheduler& context, ::std::string name);
195 // NOLINTEND
196
197public:
198 // destructor thunk
199 // NOLINTBEGIN
200 MCAPI void $dtor();
201 // NOLINTEND
202
203public:
204 // virtual function thunks
205 // NOLINTBEGIN
206 MCAPI ::Bedrock::Threading::Async<void> $queue_DEPRECATED(
207 ::TaskStartInfo const& startInfo,
209 ::std::function<void()>&& callback
210 );
211
212 MCAPI ::Bedrock::Threading::Async<void>
213 $queueSync_DEPRECATED(::TaskStartInfo const& startInfo, ::brstd::move_only_function<::TaskResult()>&& task);
214
215 MCAPI void $taskRegister(::std::shared_ptr<::BackgroundTaskBase> task);
216
217 MCAPI void $requeueTask(::std::shared_ptr<::BackgroundTaskBase> task, bool queueImmediate);
218
219 MCFOLD ::TaskGroupState $getState() const;
220
221 MCAPI void $processCoroutines();
222
223 MCAPI void $taskComplete(::gsl::not_null<::BackgroundTaskBase*> task);
224
225 MCAPI bool $_workerPoolIsAsync() const;
226
227
228 // NOLINTEND
229};
Definition BackgroundTaskBase.h:18
Definition HeaderCollection.h:7
Definition Request.h:15
Definition Response.h:7
Definition EditorNetworkPacket.h:19
Definition IBackgroundTaskOwner.h:17
Definition JsonRpcError.h:7
Definition TurnConfigResult.h:7
Definition Value.h:16
Definition Pack.h:28
Definition ResourcePack.h:25
Definition Scheduler.h:14
Definition Event.h:15
Definition TaskGroup.h:96
Definition TaskGroup.h:98
Definition TaskResult.h:5
Definition WebKey.h:13
Definition WorkerPool.h:16
Definition WorldPacksHistoryFile.h:11
Definition move_only_function.h:9
STL namespace.
Definition AsyncJoinAllow.h:5
Definition AsyncJoinDeny.h:8
Definition Url.h:7
Definition AzureGetTokenHttpResponse.h:7
Definition EnvironmentQueryResponse.h:12
Definition ServiceError.h:12
Definition CachedAsyncRetry.h:7
Definition DedicatedServerInitResult.h:7
Definition NetworkSystemDep.h:10
Definition ServerInstanceDep.h:10
Definition MakeCodeFileIOReadResult.h:10
Definition MinecraftServiceKeyInfo.h:5
Definition MinecraftServiceKeysMetadata.h:5
Definition PackCommandResult.h:7
Definition PackSourceLoadResult.h:5
Definition PingedCompatibleServer.h:5
Definition PackModifications.h:7
Definition TextFilterResult.h:7
Definition SignalingClientConfiguration.h:5
Definition TaskStartInfo.h:5
Definition context.h:5