aboutsummaryrefslogtreecommitdiff
path: root/immediates.lua
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-08-06 19:19:23 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-08-06 19:19:23 +0200
commita2770298f040307f8dd59c7a88d7e40d37faec14 (patch)
tree3ce0ec0c31be5b2f87c086488973e8957acf84ad /immediates.lua
parentf6cc945b08e5a89492d92a88a7146da421e42819 (diff)
downloadlua_async-a2770298f040307f8dd59c7a88d7e40d37faec14.tar.xz
Add source code
Diffstat (limited to 'immediates.lua')
-rw-r--r--immediates.lua26
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
+