minetest/builtin/async_env.lua
ShadowNinja 6ab3b4c838 Remove dependency on marshal and many other async changes
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
2014-04-27 16:15:53 -04:00

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