LeviLamina
Loading...
Searching...
No Matches
EditorCoroutineService.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/common/editor/EditorCoroutineServiceProvider.h"
7#include "mc/common/editor/Generator.h"
8#include "mc/common/editor/Task.h"
9#include "mc/common/editor/TaskCompletionStatus.h"
10#include "mc/deps/script_core/runtime/scripting/Result_deprecated.h"
11#include "mc/editor/services/IEditorService.h"
12#include "mc/platform/brstd/move_only_function.h"
13
14// auto generated forward declare list
15// clang-format off
16class Scheduler;
17namespace Editor { class ServiceProviderCollection; }
18namespace Editor { struct CoroutineStatus; }
19namespace Editor::Coroutine { class CoroutineTaskContext; }
20namespace Editor::Coroutine { struct CoroutineTaskOptions; }
21namespace Editor::Coroutine { struct OwnerMetadata; }
22namespace Editor::Coroutine { struct TaskHandle; }
23namespace Editor::Coroutine { struct TaskSnapshot; }
24namespace brstd { struct source_location; }
25// clang-format on
26
27namespace Editor::Services {
28
29class EditorCoroutineService : public ::Editor::Services::IEditorService,
31public:
32 // EditorCoroutineService inner types declare
33 // clang-format off
34 struct ActiveTask;
35 struct CompletedInfo;
36 struct OwnerBucket;
37 struct PumpContext;
38 struct TaskDiagnostics;
39 // clang-format on
40
41 // EditorCoroutineService inner types define
42 struct ActiveTask {
43 public:
44 // member variables
45 // NOLINTBEGIN
75 // NOLINTEND
76
77 public:
78 // prevent constructor by default
79 ActiveTask& operator=(ActiveTask const&);
80 ActiveTask(ActiveTask const&);
81 ActiveTask();
82 };
83
84 struct CompletedInfo {
85 public:
86 // member variables
87 // NOLINTBEGIN
92 // NOLINTEND
93
94 public:
95 // prevent constructor by default
96 CompletedInfo& operator=(CompletedInfo const&);
97 CompletedInfo(CompletedInfo const&);
98 CompletedInfo();
99 };
100
101 struct OwnerBucket {
102 public:
103 // member variables
104 // NOLINTBEGIN
109 // NOLINTEND
110
111 public:
112 // prevent constructor by default
113 OwnerBucket& operator=(OwnerBucket const&);
114 OwnerBucket(OwnerBucket const&);
115 OwnerBucket();
116 };
117
118 struct PumpContext {
119 public:
120 // member variables
121 // NOLINTBEGIN
132 // NOLINTEND
133
134 public:
135 // prevent constructor by default
136 PumpContext& operator=(PumpContext const&);
137 PumpContext(PumpContext const&);
138 PumpContext();
139 };
140
141 struct TaskDiagnostics {
142 public:
143 // member variables
144 // NOLINTBEGIN
149 // NOLINTEND
150
151 public:
152 // prevent constructor by default
153 TaskDiagnostics& operator=(TaskDiagnostics const&);
154 TaskDiagnostics(TaskDiagnostics const&);
155 TaskDiagnostics();
156 };
157
158public:
159 // member variables
160 // NOLINTBEGIN
178 // NOLINTEND
179
180public:
181 // prevent constructor by default
182 EditorCoroutineService& operator=(EditorCoroutineService const&);
183 EditorCoroutineService(EditorCoroutineService const&);
184 EditorCoroutineService();
185
186public:
187 // virtual functions
188 // NOLINTBEGIN
189 virtual ~EditorCoroutineService() /*override*/ = default;
190
191 virtual ::Scripting::Result_deprecated<void> init() /*override*/;
192
193 virtual ::Scripting::Result_deprecated<void> quit() /*override*/;
194
195 virtual ::std::string_view getServiceName() const /*override*/;
196
197 virtual ::Editor::Coroutine::TaskHandle queue(
198 ::std::string name,
199 ::Editor::Generator<::Editor::CoroutineStatus>&& coroutine,
200 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
201 uint64 ownerId,
202 ::brstd::source_location creationSite
203 ) /*override*/;
204
205 virtual ::Editor::Coroutine::TaskHandle queueTask(
206 ::std::string name,
207 ::Editor::Task<void, ::Editor::CoroutineStatus>&& task,
208 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
209 uint64 ownerId,
210 ::brstd::source_location creationSite
211 ) /*override*/;
212
213 virtual bool cancel(::Editor::Coroutine::TaskHandle handle) /*override*/;
214
215 virtual void cancelAll() /*override*/;
216
217 virtual uint64 cancelForOwner(uint64 ownerId) /*override*/;
218
219 virtual uint64 allocateOwnerId() /*override*/;
220
221 virtual bool updateOwnerMetadata(::Editor::Coroutine::OwnerMetadata metadata) /*override*/;
222
223 virtual void releaseOwnerId(uint64 ownerId) /*override*/;
224
225 virtual uint64 activeTaskCount() const /*override*/;
226
227 virtual uint64 activeTaskCountForOwner(uint64 ownerId) const /*override*/;
228
229 virtual bool hasActiveTasks() const /*override*/;
230
231 virtual ::Editor::CoroutineStatus const* getTaskStatus(::Editor::Coroutine::TaskHandle handle) const /*override*/;
232
233 virtual ::std::string const* getTaskName(::Editor::Coroutine::TaskHandle handle) const /*override*/;
234
235 virtual ::std::vector<::Editor::Coroutine::TaskSnapshot> getTaskSnapshots() const /*override*/;
236
237 virtual uint64 pump(::std::chrono::microseconds budget) /*override*/;
238
239 virtual ::Editor::Coroutine::TaskHandle _queueTaskFactory(
240 ::std::string name,
241 ::Editor::Coroutine::CoroutineTaskOptions options,
242 ::brstd::move_only_function<
243 ::Editor::Task<void, ::Editor::CoroutineStatus>(::Editor::Coroutine::CoroutineTaskContext&)> factory,
244 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
245 uint64 ownerId,
246 ::brstd::source_location creationSite
247 ) /*override*/;
248 // NOLINTEND
249
250public:
251 // member functions
252 // NOLINTBEGIN
253 MCNAPI EditorCoroutineService(
254 ::Editor::ServiceProviderCollection& providers,
255 ::Scheduler& scheduler,
256 ::std::function<::std::chrono::steady_clock::time_point()> now,
257 ::std::function<void(::Editor::Coroutine::TaskSnapshot const&)> possiblyHungSink
258 );
259
260 MCNAPI ::Editor::Coroutine::TaskHandle _enqueue(
261 uint64 id,
262 ::Editor::Coroutine::OwnerMetadata owner,
263 ::std::string name,
264 ::std::unique_ptr<::Editor::Coroutine::CoroutineTaskContext>&& taskContext,
265 ::std::variant<
266 ::Editor::Generator<::Editor::CoroutineStatus>,
267 ::Editor::Task<void, ::Editor::CoroutineStatus>>&& coroutine,
268 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
269 ::brstd::source_location const& creationSite
270 );
271
272 MCNAPI ::Editor::Coroutine::OwnerMetadata _getOwnerMetadata(uint64 ownerId) const;
273
274 MCNAPI ::Editor::Coroutine::TaskHandle _queue(
275 ::std::string name,
276 ::std::variant<
277 ::Editor::Generator<::Editor::CoroutineStatus>,
278 ::Editor::Task<void, ::Editor::CoroutineStatus>>&& coroutine,
279 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
280 uint64 ownerId,
281 ::brstd::source_location const& creationSite
282 );
283
284 MCNAPI ::std::vector<::Editor::Services::EditorCoroutineService::CompletedInfo> _removePendingTasks();
285
286 MCNAPI void _rotateOwnerTaskAfter(uint64 ownerId, uint64 taskId);
287
288 MCNAPI void _runTask(uint64 taskId, ::Editor::Services::EditorCoroutineService::PumpContext& context);
289
291 // NOLINTEND
292
293public:
294 // static variables
295 // NOLINTBEGIN
296 MCNAPI static ::std::string_view const& ServiceName();
297 // NOLINTEND
298
299public:
300 // constructor thunks
301 // NOLINTBEGIN
302 MCNAPI void* $ctor(
303 ::Editor::ServiceProviderCollection& providers,
304 ::Scheduler& scheduler,
305 ::std::function<::std::chrono::steady_clock::time_point()> now,
306 ::std::function<void(::Editor::Coroutine::TaskSnapshot const&)> possiblyHungSink
307 );
308 // NOLINTEND
309
310public:
311 // virtual function thunks
312 // NOLINTBEGIN
313 MCNAPI ::Scripting::Result_deprecated<void> $init();
314
315 MCNAPI ::Scripting::Result_deprecated<void> $quit();
316
317 MCNAPI ::std::string_view $getServiceName() const;
318
319 MCNAPI ::Editor::Coroutine::TaskHandle $queue(
320 ::std::string name,
321 ::Editor::Generator<::Editor::CoroutineStatus>&& coroutine,
322 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
323 uint64 ownerId,
324 ::brstd::source_location creationSite
325 );
326
327 MCNAPI ::Editor::Coroutine::TaskHandle $queueTask(
328 ::std::string name,
329 ::Editor::Task<void, ::Editor::CoroutineStatus>&& task,
330 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
331 uint64 ownerId,
332 ::brstd::source_location creationSite
333 );
334
335 MCNAPI bool $cancel(::Editor::Coroutine::TaskHandle handle);
336
337 MCNAPI void $cancelAll();
338
339 MCNAPI uint64 $cancelForOwner(uint64 ownerId);
340
341 MCNAPI uint64 $allocateOwnerId();
342
343 MCNAPI bool $updateOwnerMetadata(::Editor::Coroutine::OwnerMetadata metadata);
344
345 MCNAPI void $releaseOwnerId(uint64 ownerId);
346
347 MCNAPI uint64 $activeTaskCount() const;
348
349 MCNAPI uint64 $activeTaskCountForOwner(uint64 ownerId) const;
350
351 MCNAPI bool $hasActiveTasks() const;
352
353 MCNAPI ::Editor::CoroutineStatus const* $getTaskStatus(::Editor::Coroutine::TaskHandle handle) const;
354
355 MCNAPI ::std::string const* $getTaskName(::Editor::Coroutine::TaskHandle handle) const;
356
357 MCNAPI ::std::vector<::Editor::Coroutine::TaskSnapshot> $getTaskSnapshots() const;
358
359 MCNAPI uint64 $pump(::std::chrono::microseconds budget);
360
361 MCNAPI ::Editor::Coroutine::TaskHandle $_queueTaskFactory(
362 ::std::string name,
363 ::Editor::Coroutine::CoroutineTaskOptions options,
364 ::brstd::move_only_function<
365 ::Editor::Task<void, ::Editor::CoroutineStatus>(::Editor::Coroutine::CoroutineTaskContext&)> factory,
366 ::std::function<void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete,
367 uint64 ownerId,
368 ::brstd::source_location creationSite
369 );
370
371
372 // NOLINTEND
373};
374
375} // namespace Editor::Services
Definition CoroutineTaskContext.h:7
Definition Generator.h:8
Definition ServiceProviderCollection.h:7
Definition EditorCoroutineServiceProvider.h:24
MCAPI void _rotateOwnerTaskAfter(uint64 ownerId, uint64 taskId)
MCAPI::Editor::CoroutineStatus const * $getTaskStatus(::Editor::Coroutine::TaskHandle handle) const
MCAPI::std::string_view $getServiceName() const
MCAPI void _runTask(uint64 taskId, ::Editor::Services::EditorCoroutineService::PumpContext &context)
MCAPI bool $updateOwnerMetadata(::Editor::Coroutine::OwnerMetadata metadata)
MCAPI ::Scripting::Result_deprecated< void > $init()
MCAPI::Editor::Coroutine::TaskHandle $_queueTaskFactory(::std::string name, ::Editor::Coroutine::CoroutineTaskOptions options, ::brstd::move_only_function< ::Editor::Task< void, ::Editor::CoroutineStatus >(::Editor::Coroutine::CoroutineTaskContext &)> factory, ::std::function< void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete, uint64 ownerId, ::brstd::source_location creationSite)
static MCAPI ::std::string_view const & ServiceName()
MCAPI::Editor::Coroutine::TaskHandle _enqueue(uint64 id, ::Editor::Coroutine::OwnerMetadata owner, ::std::string name, ::std::unique_ptr<::Editor::Coroutine::CoroutineTaskContext > &&taskContext, ::std::variant< ::Editor::Generator<::Editor::CoroutineStatus >, ::Editor::Task< void, ::Editor::CoroutineStatus > > &&coroutine, ::std::function< void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete, ::brstd::source_location const &creationSite)
MCAPI uint64 $activeTaskCountForOwner(uint64 ownerId) const
MCAPI::Editor::Coroutine::OwnerMetadata _getOwnerMetadata(uint64 ownerId) const
MCAPI uint64 $cancelForOwner(uint64 ownerId)
MCAPI::Editor::Coroutine::TaskHandle $queue(::std::string name, ::Editor::Generator<::Editor::CoroutineStatus > &&coroutine, ::std::function< void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete, uint64 ownerId, ::brstd::source_location creationSite)
MCAPI::Editor::Coroutine::TaskHandle _queue(::std::string name, ::std::variant< ::Editor::Generator<::Editor::CoroutineStatus >, ::Editor::Task< void, ::Editor::CoroutineStatus > > &&coroutine, ::std::function< void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete, uint64 ownerId, ::brstd::source_location const &creationSite)
MCAPI uint64 $pump(::std::chrono::microseconds budget)
MCAPI void $releaseOwnerId(uint64 ownerId)
MCAPI::std::string const * $getTaskName(::Editor::Coroutine::TaskHandle handle) const
MCAPI void * $ctor(::Editor::ServiceProviderCollection &providers, ::Scheduler &scheduler, ::std::function<::std::chrono::steady_clock::time_point()> now, ::std::function< void(::Editor::Coroutine::TaskSnapshot const &)> possiblyHungSink)
MCAPI ::std::vector<::Editor::Coroutine::TaskSnapshot > $getTaskSnapshots() const
MCAPI ::Scripting::Result_deprecated< void > $quit()
MCAPI ::std::vector<::Editor::Services::EditorCoroutineService::CompletedInfo > _removePendingTasks()
MCAPI::Editor::Coroutine::TaskHandle $queueTask(::std::string name, ::Editor::Task< void, ::Editor::CoroutineStatus > &&task, ::std::function< void(uint64, ::Editor::Coroutine::TaskCompletionStatus)> onComplete, uint64 ownerId, ::brstd::source_location creationSite)
MCAPI bool $cancel(::Editor::Coroutine::TaskHandle handle)
Definition IEditorService.h:11
Definition Task.h:8
Definition Scheduler.h:14
STL namespace.
Definition CoroutineStatus.h:7
Definition CoroutineTaskOptions.h:7
Definition OwnerMetadata.h:7
Definition TaskHandle.h:7
Definition TaskSnapshot.h:7
Definition EditorCoroutineService.h:42
Definition EditorCoroutineService.h:84
Definition EditorCoroutineService.h:101
Definition EditorCoroutineService.h:118
Definition EditorCoroutineService.h:141
Definition source_location.h:7
Definition context.h:5
Definition Alias.h:14