mirror of
https://github.com/minetest/minetest.git
synced 2024-11-30 11:33:44 +01:00
6ab3b4c838
This makes a number of changes: * Remove the dependency on marshal by using string.dump and loadstring. * Use lua_tolstring rather than having Lua functions pass string lengths to C++. * Move lua_api/l_async_events.* to cpp_api/s_async.*, where it belongs. * Make AsyncWorkerThread a child of ScriptApiBase, this removes some duplicate functionality. * Don't wait for async threads to shut down. (Is this safe? Might result in corruption if the thread is writing to a file.) * Pop more unused items from the stack * Code style fixes * Other misc changes
22 lines
578 B
Lua
22 lines
578 B
Lua
engine.log("info", "Initializing Asynchronous environment")
|
|
local tbl = engine or minetest
|
|
|
|
minetest = tbl
|
|
dofile(SCRIPTDIR .. DIR_DELIM .. "serialize.lua")
|
|
dofile(SCRIPTDIR .. DIR_DELIM .. "misc_helpers.lua")
|
|
|
|
function tbl.job_processor(serialized_func, serialized_param)
|
|
local func = loadstring(serialized_func)
|
|
local param = tbl.deserialize(serialized_param)
|
|
local retval = nil
|
|
|
|
if type(func) == "function" then
|
|
retval = tbl.serialize(func(param))
|
|
else
|
|
tbl.log("error", "ASYNC WORKER: Unable to deserialize function")
|
|
end
|
|
|
|
return retval or tbl.serialize(nil)
|
|
end
|
|
|