diff options
Diffstat (limited to 'immediates.lua')
-rw-r--r-- | immediates.lua | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/immediates.lua b/immediates.lua new file mode 100644 index 0000000..6e06372 --- /dev/null +++ b/immediates.lua @@ -0,0 +1,26 @@ +lua_async.immediates = { + pool = {}, + last_id = 0, +} + +function setImmediate(callback, ...) + local id = lua_async.immediates.last_id + 1 + lua_async.immediates.last_id = id + lua_async.immediates.pool[id] = { + callback = callback, + args = {...}, + } + return id +end + +function clearImmediate(id) + lua_async.immediates.pool[id] = nil +end + +function lua_async.immediates.step(dtime) + for id, immediate in pairs(lua_async.immediates.pool) do + immediate.callback(unpack(immediate.args)) + clearImmediate(id) + end +end + |