Sha256: f87e462e1b7e600057fe7ade0cccf855f9a836efe1daf4ab03be3d865b1dd364

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

class Eye::Trigger
  include Eye::Logger::Helpers
  
  autoload :Flapping,   'eye/trigger/flapping'

  # ex: { :type => :flapping, :times => 2, :within => 30.seconds}

  TYPES = {:flapping => "Flapping"}

  attr_reader :message, :options

  def self.get_class(type)
    klass = eval("Eye::Trigger::#{TYPES[type]}") rescue nil
    raise "Unknown trigger #{type}" unless klass
    klass
  end

  def self.create(options = {}, logger_prefix = nil)
    get_class(options[:type]).new(options, logger_prefix)
  end

  def self.validate!(options = {})
    get_class(options[:type]).validate(options)
  end

  def initialize(options = {}, logger_prefix = nil)
    @options = options
    @logger = Eye::Logger.new(logger_prefix, "trigger")

    debug "add #{options}"
  end

  def check(states_history)
    @states_history = states_history

    res = good?

    if res
      debug 'check flapping'
    else
      debug "!!! #{self.class} recognized !!!"
    end
    
    res
  end

  def good?
    raise 'realize me'
  end

  extend Eye::Dsl::Validation

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
reel-eye-0.3.2 lib/eye/trigger.rb
eye-0.3.2 lib/eye/trigger.rb
reel-eye-0.3.1 lib/eye/trigger.rb
eye-0.3.1 lib/eye/trigger.rb
eye-0.3 lib/eye/trigger.rb
eye-0.2.4 lib/eye/trigger.rb
eye-0.2.3 lib/eye/trigger.rb