class ServiceJynx::Jynx

Attributes

alive[RW]
down_at[RW]
errors[RW]
grace_period[RW]
max_errors[RW]
name[RW]
time_window_in_seconds[RW]

Public Class Methods

new(name, options) click to toggle source
# File lib/service_jynx.rb, line 47
def initialize(name, options)
  @name = name
  @down_at = 0
  @alive = true
  @errors = []
  opts = {
    time_window_in_seconds: 10,
    max_errors: 40,
    grace_period: 360
    }.merge!(options)
  @time_window_in_seconds = opts[:time_window_in_seconds]
  @max_errors = opts[:max_errors]
  @grace_period = opts[:grace_period]
end

Public Instance Methods

alive?() click to toggle source
# File lib/service_jynx.rb, line 80
def alive?
  return true if @alive
  near_past = Time.now.to_i - @grace_period
  up! if (@down_at < near_past) and return true
  false
end
clean_aged(time_now) click to toggle source

clean up errors that are older than time_window_in_secons

# File lib/service_jynx.rb, line 63
def clean_aged(time_now)
  near_past = time_now - @time_window_in_seconds
  @errors = @errors.reverse.select{|time_stamp| time_stamp  > near_past }.reverse.to_a
end
down!(reason) click to toggle source
# File lib/service_jynx.rb, line 68
def down!(reason)
  @alive = false
  @down_at = Time.now.to_i
  LoggerJynx.logger.error "Shutting down [#{@name}] #{reason} at #{@down_at}."      
end
up!() click to toggle source
# File lib/service_jynx.rb, line 74
def up!
  LoggerJynx.logger.error "Upping [#{@name}]."      
  @alive = true
  @down_at = 0
end