class LogStash::Outputs::Application_insights::Timer

Attributes

callback[R]
expiration[R]
object[R]
state[RW]

Public Class Methods

config( configuration ) click to toggle source
# File lib/logstash/outputs/application_insights/timer.rb, line 31
def self.config ( configuration )
  @@configuration = configuration
  @@logger = configuration[:logger]
  @@timers = []
  @@timers_modified = false
  @@timers_mutex = Mutex.new

  Thread.new do
    loop do
      sleep( 1 )

      curr_time = Time.now.utc
      timers_triggerd = [  ]

      @@timers_mutex.synchronize {
        @@timers.each do |timer|
          if :on == timer.state && curr_time >= timer.expiration
            timer.state = :trigger
            timers_triggerd << [ timer.object, timer.callback ]
          end
        end
      }

      timers_triggerd.each do |pair|
        (object, callback) = pair
        callback.call( object )
      end
    end
  end

end
new() click to toggle source
# File lib/logstash/outputs/application_insights/timer.rb, line 63
def initialize
  @@timers_mutex.synchronize {
    @@timers << self
  }
  @state = :off
end

Public Instance Methods

cancel() click to toggle source
# File lib/logstash/outputs/application_insights/timer.rb, line 80
def cancel
  @@timers_mutex.synchronize {
    state = @state
    @state = :off
    @@timers_modified = true if :on == state
    state != :trigger
  }
end
set( expiration, object, &callback ) click to toggle source
# File lib/logstash/outputs/application_insights/timer.rb, line 70
def set ( expiration, object, &callback )
  @@timers_mutex.synchronize {
    @@timers_modified= true
    @state = :on
    @object = object
    @expiration = expiration
    @callback = callback
  }
end