class EventLoop::Loop::Timer
Attributes
event[R]
interval[R]
last_fired_at[R]
next_fire_time[R]
Public Class Methods
new(interval, event, repeat=false)
click to toggle source
# File lib/event_loop/loop.rb, line 7 def initialize(interval, event, repeat=false) @interval = interval @event = event @repeat = repeat @started_at = Time.now @last_fired_at = nil reschedule end
Public Instance Methods
advance(amount)
click to toggle source
# File lib/event_loop/loop.rb, line 20 def advance(amount) @next_fire_time -= amount end
calculate_next_fire_time()
click to toggle source
# File lib/event_loop/loop.rb, line 28 def calculate_next_fire_time now = Time.now return now if @interval == 0 fire_time = @last_fired_at || now while fire_time <= now fire_time += @interval end fire_time end
due?(now=Time.now)
click to toggle source
# File lib/event_loop/loop.rb, line 42 def due?(now=Time.now) now >= @next_fire_time end
finished?()
click to toggle source
# File lib/event_loop/loop.rb, line 46 def finished? !@repeat && @last_fired_at end
last_interval_start()
click to toggle source
# File lib/event_loop/loop.rb, line 24 def last_interval_start @last_fired_at || @started_at end
reschedule()
click to toggle source
# File lib/event_loop/loop.rb, line 16 def reschedule @next_fire_time = calculate_next_fire_time end
set_fired_time()
click to toggle source
# File lib/event_loop/loop.rb, line 38 def set_fired_time @last_fired_at = Time.now end