Class: Sensu::PeriodicTimer

Inherits:
EventMachine::PeriodicTimer
  • Object
show all
Defined in:
lib/sensu/timers.rb

Overview

Instance Method Summary collapse

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_initializeObject



8
# File 'lib/sensu/timers.rb', line 8

alias :original_initialize :initialize

#original_scheduleObject



9
# File 'lib/sensu/timers.rb', line 9

alias :original_schedule :schedule

#scheduleObject

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