Low precision timers implemented in pure Ruby
# File lib/timers.rb, line 59 def add(timer) raise TypeError, "not a Timers::Timer" unless timer.is_a? Timers::Timer @timers.add(timer) end
Call the given block after the given interval
# File lib/timers.rb, line 16 def after(interval, &block) Timer.new(self, interval, false, &block) end
Call the given block after the given interval has expired. interval is measured in milliseconds.
Timer.new.after_milliseconds(25) { puts "fired!" }
# File lib/timers.rb, line 25 def after_milliseconds(interval, &block) after(interval / 1000.0, &block) end
Call the given block periodically at the given interval
# File lib/timers.rb, line 31 def every(interval, &block) Timer.new(self, interval, true, &block) end
Fire all timers that are ready
# File lib/timers.rb, line 51 def fire(now = Time.now) time = now + 0.001 # Fudge 1ms in case of clock imprecision while (timer = @timers.first) && (time >= timer.time) @timers.delete timer timer.fire(now) end end
Generated with the Darkfish Rdoc Generator 2.