]> git.lizzy.rs Git - lua_async.git/blob - immediates.lua
Merge branch 'master' of https://github.com/EliasFleckenstein03/lua_async
[lua_async.git] / immediates.lua
1 local unpack = unpack or table.unpack
2 lua_async.immediates = {
3         pool = {},
4         executing = {},
5         last_id = 0,
6 }
7
8 function setImmediate(callback, ...)
9         local id = lua_async.immediates.last_id + 1
10         lua_async.immediates.last_id = id
11         lua_async.immediates.pool[id] = {
12                 callback = callback,
13                 args = {...},
14         }
15         return id
16 end
17
18 function clearImmediate(id)
19         lua_async.immediates.pool[id] = nil
20         lua_async.immediates.executing[id] = nil
21 end
22
23 function lua_async.immediates.step(dtime)
24         lua_async.immediates.executing = lua_async.immediates.pool
25         lua_async.immediates.pool = {}
26
27         for id, immediate in pairs(lua_async.immediates.executing) do
28                 immediate.callback(unpack(immediate.args))
29         end
30 end
31