]> jfr.im git - irc/quakenet/newserv.git/blame - lua/lib/scheduler.lua
TRUSTS: require sqlite
[irc/quakenet/newserv.git] / lua / lib / scheduler.lua
CommitLineData
72054e5b
CP
1Scheduler = class(function(obj)
2 obj.sched = raw_scheduler_new()
3end)
4
5function Scheduler:add(when, callback, ...)
6 return self:add_abs(os.time() + when, callback, ...)
7end
8
9function Scheduler:add_abs(w, callback, ...)
10 local args = { ... }
11 local pfn = function()
12 callback(unpack(args))
13 end
14
15 return raw_scheduler_add(self.sched, w, function()
16 local status, err = pcall(pfn)
17 if not status then
18 scripterror(err)
19 end
20 end)
21end
22
23function Scheduler:remove(tag)
24 raw_scheduler_remove(tag)
25end
26
27function Scheduler:getn()
28 return raw_scheduler_count(self.sched)
29end