1 local tbl = engine or minetest
6 function tbl.async_event_handler(jobid, serialized_retval)
8 if serialized_retval ~= "ERROR" then
9 retval= marshal.decode(serialized_retval)
11 tbl.log("error","Error fetching async result")
14 assert(type(tbl.async_jobs[jobid]) == "function")
15 tbl.async_jobs[jobid](retval)
16 tbl.async_jobs[jobid] = nil
20 minetest.register_globalstep(
22 local list = tbl.get_finished_jobs()
25 local retval = marshal.decode(list[i].retval)
27 assert(type(tbl.async_jobs[jobid]) == "function")
28 tbl.async_jobs[list[i].jobid](retval)
29 tbl.async_jobs[list[i].jobid] = nil
34 function tbl.handle_async(fct, parameters, callback)
37 local serialized_fct = marshal.encode(fct)
39 assert(marshal.decode(serialized_fct) ~= nil)
41 --serialize parameters
42 local serialized_params = marshal.encode(parameters)
44 if serialized_fct == nil or
45 serialized_params == nil or
46 serialized_fct:len() == 0 or
47 serialized_params:len() == 0 then
51 local jobid = tbl.do_async_callback( serialized_fct,
54 serialized_params:len())
56 tbl.async_jobs[jobid] = callback