summaryrefslogtreecommitdiff
path: root/builtin/async_env.lua
diff options
context:
space:
mode:
authorsapier <Sapier at GMX dot net>2013-11-26 18:15:31 +0100
committersapier <Sapier at GMX dot net>2013-11-29 22:09:14 +0100
commit2e66aca35722e7fee786027d545fe371786fc01f (patch)
treef6d3ec721d23680bb493bd66054379b9327a1c7a /builtin/async_env.lua
parentb08d7558de53325d184b3ddf0476cb84fc08d0ad (diff)
downloadminetest-2e66aca35722e7fee786027d545fe371786fc01f.tar.gz
minetest-2e66aca35722e7fee786027d545fe371786fc01f.tar.bz2
minetest-2e66aca35722e7fee786027d545fe371786fc01f.zip
Fix modstore/favourites hang by adding asynchronous lua job support
Diffstat (limited to 'builtin/async_env.lua')
-rw-r--r--builtin/async_env.lua19
1 files changed, 19 insertions, 0 deletions
diff --git a/builtin/async_env.lua b/builtin/async_env.lua
new file mode 100644
index 000000000..afc69219c
--- /dev/null
+++ b/builtin/async_env.lua
@@ -0,0 +1,19 @@
+engine.log("info","Initializing Asynchronous environment")
+
+dofile(SCRIPTDIR .. DIR_DELIM .. "misc_helpers.lua")
+
+function engine.job_processor(serialized_function, serialized_data)
+
+ local fct = marshal.decode(serialized_function)
+ local params = marshal.decode(serialized_data)
+ local retval = marshal.encode(nil)
+
+ if fct ~= nil and type(fct) == "function" then
+ local result = fct(params)
+ retval = marshal.encode(result)
+ else
+ engine.log("error","ASYNC WORKER: unable to deserialize function")
+ end
+
+ return retval,retval:len()
+end