Sha256: a04f0b035e27e73947b131a1330c672a375beedb02ed5471d0020ea1f26f945f

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 KB

Contents

class FnordMetric::Gauge
  
  include FnordMetric::GaugeCalculations
  include FnordMetric::GaugeModifiers
  include FnordMetric::GaugeValidations
  include FnordMetric::GaugeRendering

  def initialize(opts)
    opts.fetch(:key) && opts.fetch(:key_prefix)
    @opts = opts
  end

  def tick
    (@opts[:tick] || @opts[:resolution] || 3600).to_i
  end

  def retention
    tick * 10 # FIXPAUL!
  end

  def tick_at(time, _tick=tick)    
    (time/_tick.to_f).floor*_tick
  end

  def name
    @opts[:key]
  end

  def title
    @opts[:title] || name
  end

  def group
    @opts[:group] || "Gauges"
  end

  def key_nouns
    @opts[:key_nouns] || ["Key", "Keys"]
  end
  
  def key(_append=nil)
    [@opts[:key_prefix], "gauge", name, tick, _append].flatten.compact.join("-")
  end

  def tick_key(_time, _append=nil)
    key([(progressive? ? :progressive : tick_at(_time).to_s), _append])
  end

  def tick_keys(_range, _append=nil)
    ticks_in(_range).map{ |_t| tick_key(_t, _append) }
  end

  def retention_key(_time, _append=nil)
    key([tick_at(_time, retention).to_s, _append])
  end

  def two_dimensional?
    !@opts[:three_dimensional]
  end

  def three_dimensional?
    !!@opts[:three_dimensional]
  end

  def progressive?
    !!@opts[:progressive]
  end

  def unique?
    !!@opts[:unique]
  end

  def average?
    !!@opts[:average]
  end

  def has_series?
    false
  end

  def redis
    @redis ||= EM::Hiredis.connect(FnordMetric.options[:redis_url]) # FIXPAUL
  end

  def sync_redis
    @sync_redis ||= FnordMetric.mk_redis # FIXPAUL
  end

  def error!(msg)
    FnordMetric.error(msg)
  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fnordmetric-1.0.1 lib/fnordmetric/gauge.rb
fnordmetric-1.0.0 lib/fnordmetric/gauge.rb
fnordmetric-0.9.7 lib/fnordmetric/gauge.rb