Class: Sensu::PeriodicTimer
- Inherits:
-
EventMachine::PeriodicTimer
- Object
- EventMachine::PeriodicTimer
- Sensu::PeriodicTimer
- Defined in:
- lib/sensu/timers.rb
Overview
This fix comes from soohwan.blogspot.ca/2011/02/fix-eventmachineperiodictimer.html
Instance Method Summary collapse
-
#initialize(interval, callback = nil, &block) ⇒ PeriodicTimer
constructor
Record initial start time and the fixed interval, used for compensating for timer drift when scheduling the next call.
- #original_initialize ⇒ Object
- #original_schedule ⇒ Object
-
#schedule ⇒ Object
Calculate the timer drift and compensate for it.
Constructor Details
#initialize(interval, callback = nil, &block) ⇒ PeriodicTimer
Record initial start time and the fixed interval, used for compensating for timer drift when scheduling the next call.
13 14 15 16 17 |
# File 'lib/sensu/timers.rb', line 13 def initialize(interval, callback=nil, &block) @start = Time.now @fixed_interval = interval original_initialize(interval, callback, &block) end |
Instance Method Details
#original_initialize ⇒ Object
8 |
# File 'lib/sensu/timers.rb', line 8 alias :original_initialize :initialize |
#original_schedule ⇒ Object
9 |
# File 'lib/sensu/timers.rb', line 9 alias :original_schedule :schedule |
#schedule ⇒ Object
Calculate the timer drift and compensate for it.
20 21 22 23 24 |
# File 'lib/sensu/timers.rb', line 20 def schedule compensation = (Time.now - @start) % @fixed_interval @interval = @fixed_interval - compensation original_schedule end |