/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Async.hpp Date: 2021-7-14 Author: Reece ***/ #pragma once #include "AsyncTypes.hpp" #include "IWorkItem.hpp" #include "IWorkItemHandler.hpp" #include "IThreadPool.hpp" #include "IAsyncApp.hpp" #include "Legacy/Jobs.hpp" #include "Legacy/Tasks.hpp" namespace Aurora::Async { AUKN_SYM IAsyncApp *GetAsyncApp(); AUKN_SYM AuSPtr GetSharedAsyncApp(); /// AUKN_SYM WorkerPId_t GetCurrentWorkerPId(); /// Async app only | Thread pools must use the IThreadPool::NewFence function AUKN_SYM AuSPtr NewWorkItem(const WorkerId_t &worker, const AuSPtr &task, bool supportsBlocking = false); AUKN_SYM AuSPtr NewWorkItem(const WorkerPId_t &worker, const AuSPtr &task, bool supportsBlocking = false); /// Async app only | Thread pools must use the IThreadPool::NewFence function AUKN_SYM AuSPtr NewFence(); /// Allocates a new thread pool for usage AUKN_SYM AuSPtr NewThreadPool(); /// AUKN_SYM void SetMainThreadForSysPumpScheduling(WorkerPId_t pid); } #if !defined(_CPPSHARP) #include "IPCPromises.hpp" #include "Legacy/JobFrom.hpp" #include "Legacy/TaskFrom.hpp" #include "Legacy/WorkPairImpl.hpp" #include "Legacy/WorkBasic.hpp" #include "Legacy/OldTrash.hpp" #endif