/*** 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 "Jobs.hpp" #include "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(); } #if !defined(_CPPSHARP) #include "JobFrom.hpp" #include "TaskFrom.hpp" #include "WorkPairImpl.hpp" #include "WorkBasic.hpp" #include "OldTrash.hpp" #endif