class Mmtrix::Agent::EventLoop::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/mmtrix/agent/event_loop.rb, line 13 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/mmtrix/agent/event_loop.rb, line 26 def advance(amount) @next_fire_time -= amount end
calculate_next_fire_time()
click to toggle source
# File lib/mmtrix/agent/event_loop.rb, line 34 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/mmtrix/agent/event_loop.rb, line 48 def due?(now=Time.now) now >= @next_fire_time end
finished?()
click to toggle source
# File lib/mmtrix/agent/event_loop.rb, line 52 def finished? !@repeat && @last_fired_at end
last_interval_start()
click to toggle source
# File lib/mmtrix/agent/event_loop.rb, line 30 def last_interval_start @last_fired_at || @started_at end
reschedule()
click to toggle source
# File lib/mmtrix/agent/event_loop.rb, line 22 def reschedule @next_fire_time = calculate_next_fire_time end
set_fired_time()
click to toggle source
# File lib/mmtrix/agent/event_loop.rb, line 44 def set_fired_time @last_fired_at = Time.now end