Embeddable Lua Scheduler is a pure Lua module to manage timers.
Timers are bound to a point in time and are triggered when
current_time >= timer_time
.
Warning: Repeated timers are implemented as regular timers re-added if needed before being triggered. Thus, a timer can only be triggered once per tick; triggers may be shifted or discarded based on the tick period.
Note: Time going backwards will not change/advance the scheduler time.
Note: (performance) A binary heap is used to manage timer priorities.
Install
See src/
, rockspecs/
or
luarocks.
API
Scheduler
self.time -- current time
self.timers -- binary heap of bound timers (as array/list)
-- #self.timers => number of waiting timers
-- scheduler constructor (the module itself)
-- time: (optional) init time (numeric type, default: 0)
Scheduler(time)
-- create a timer
-- delay: can be <= 0 for instantaneous timers (numeric type)
-- count: (optional) number of iterations (default: 1, infinite: -1)
-- callback(timer): called when the timer is triggered
-- return timer
Scheduler:timer(delay, count, callback)
-- do a scheduler tick
-- time: current time (numeric type)
Scheduler:tick(time)
Timer
self.scheduler -- timer's scheduler
self.wake -- wake-up time (useful to compute delta)
self.delay -- delay/interval (start_time = wake - delay)
self.count -- remaining iterations (excluding current scheduled iteration)
-- remove the timer
-- (safe to call multiple times)
Timer:remove()