9#include <unordered_set>
91 const std::string &mod_origin =
"");
100 const std::string &mod_origin =
"");
106 void step(lua_State *L);
unsigned int autoscaleMaxWorkers
Definition s_async.h:154
~AsyncEngine()
Definition s_async.cpp:24
std::unordered_set< u32 > autoscaleSeenJobs
Definition s_async.h:156
u32 queueAsyncJob(std::string &&func, std::string &¶ms, const std::string &mod_origin="")
Queue an async job.
Definition s_async.cpp:90
u64 autoscaleTimer
Definition s_async.h:155
std::vector< AsyncWorkerThread * > workerThreads
Definition s_async.h:178
std::deque< LuaJobInfo > jobQueue
Definition s_async.h:170
void stepJobResults(lua_State *L)
Process finished jobs callbacks.
Definition s_async.cpp:157
Semaphore jobQueueCounter
Definition s_async.h:181
std::deque< LuaJobInfo > resultQueue
Definition s_async.h:175
AsyncEngine(Server *server)
Definition s_async.h:69
void registerStateInitializer(StateInitializer func)
Register function to be called on new states.
Definition s_async.cpp:55
void putJobResult(LuaJobInfo &&result)
Put a Job result back to result queue.
Definition s_async.cpp:143
void stepAutoscale()
Handle automatic scaling of worker threads.
Definition s_async.cpp:191
bool prepareEnvironment(lua_State *L, int top)
Initialize environment with current registred functions this function adds all functions registred by...
Definition s_async.cpp:226
bool getJob(LuaJobInfo *job)
Get a Job from queue to be processed this function blocks until a job is ready.
Definition s_async.cpp:125
void step(lua_State *L)
Engine step to process finished jobs.
Definition s_async.cpp:151
void(* StateInitializer)(lua_State *L, int top)
Definition s_async.h:66
std::vector< StateInitializer > stateInitializers
Definition s_async.h:162
u32 jobIdCounter
Definition s_async.h:165
void initialize(unsigned int numEngines)
Create async engine tasks and lock function registration.
Definition s_async.cpp:62
std::mutex jobQueueMutex
Definition s_async.h:168
bool initDone
Definition s_async.h:150
void addWorkerThread()
Start an additional worker thread.
Definition s_async.cpp:81
std::mutex resultQueueMutex
Definition s_async.h:173
bool isErrored
Definition s_async.h:60
virtual ~AsyncWorkerThread()
Definition s_async.cpp:291
AsyncWorkerThread(AsyncEngine *jobDispatcher, const std::string &name)
Definition s_async.cpp:260
void * run()
Definition s_async.cpp:297
AsyncEngine * jobDispatcher
Definition s_async.h:59
Definition s_security.h:26
Definition semaphore.h:18
Definition activeobjectmgr.cpp:11
std::unique_ptr< PackedValue > params_ext
Definition s_async.h:35
std::string mod_origin
Definition s_async.h:41
std::string function
Definition s_async.h:31
std::string result
Definition s_async.h:37
std::string params
Definition s_async.h:33
std::unique_ptr< PackedValue > result_ext
Definition s_async.h:39
u32 id
Definition s_async.h:43
A packed value can be a primitive like a string or number but also a table including all of its conte...
Definition c_packer.h:72