Commit ca3d832e authored by Paul Asmuth's avatar Paul Asmuth
Browse files

moved zero config gauge code to zero_config_gauge

parent a0b916b0
Loading
Loading
Loading
Loading
+2 −46
Original line number Diff line number Diff line
FnordMetric::COLORS = ["#4572a7", "#aa4643", "#89a54e", "#80699b", "#3d96ae", "#db843d"].reverse

FnordMetric::DEFAULT_PROC = lambda{ |arg| }

FnordMetric::TICKS = lambda{ |tick, span| [tick, 60, 300, 1200, 3600, 86400]
  .select{ |t| (t >= tick) && ((span/t) > 5) }
  .uniq }

FnordMetric::DEFAULT_PROC = lambda{ |arg| }

FnordMetric::ZERO_CONFIG_TYPES = [:_incr, :_decr, :_avg, :_min, :_max, :_set]

FnordMetric::ZERO_CONFIG_HANDLER = proc {
  if data[:gauge]
    gauge_key = data[:gauge].to_sym
  else
    FnordMetric.error("missing key for zero config event: gauge")
    next
  end

  unless data[:value]
    FnordMetric.error("missing key for zero config event: value")
    next
  end

  gauge = if namespace.gauges.has_key?(gauge_key)
    namespace.gauges[gauge_key]
  else
    namespace.opt_gauge(gauge_key,
      :flush_interval => data[:flush_interval],
      :average => (type == :_avg),
      :zero_config => true)
  end

  case type

    when :_set
      set_value gauge, data[:value]

    when :_incr
      incr_tick gauge, data[:value]

    when :_decr
      FnordMetric.error("_decr is not yet implemented")

    when :_avg
      incr_avg gauge, data[:value]

    when :_min, :_max
      FnordMetric.error("_min/_max is not yet implemented")

  end
}
+2 −2
Original line number Diff line number Diff line
@@ -38,8 +38,8 @@ class FnordMetric::Namespace
      event[:_session_key] = announce_to_session(event).session_key 
    end

    if FnordMetric::ZERO_CONFIG_TYPES.include?(event[:_type].to_sym)
      ctx = FnordMetric::Context.new(opts, FnordMetric::ZERO_CONFIG_HANDLER)
    if FnordMetric::ZeroConfigGauge::TYPES.include?(event[:_type].to_sym)
      ctx = FnordMetric::Context.new(opts, FnordMetric::ZeroConfigGauge::Handler)
      ctx.call(event, @redis, self)
      return self
    end
+45 −1
Original line number Diff line number Diff line
class ZeroConfigGauge
class FnordMetric::ZeroConfigGauge

  TYPES = [:_incr, :_decr, :_avg, :_min, :_max, :_set]

  Handler = proc do
    if data[:gauge]
      gauge_key = data[:gauge].to_sym
    else
      FnordMetric.error("missing key for zero config event: gauge")
      next
    end

    unless data[:value]
      FnordMetric.error("missing key for zero config event: value")
      next
    end

    gauge = if namespace.gauges.has_key?(gauge_key)
      namespace.gauges[gauge_key]
    else
      namespace.opt_gauge(gauge_key,
        :flush_interval => data[:flush_interval],
        :average => (type == :_avg),
        :zero_config => true)
    end

    case type

      when :_set
        set_value gauge, data[:value]

      when :_incr
        incr_tick gauge, data[:value]

      when :_decr
        FnordMetric.error("_decr is not yet implemented")

      when :_avg
        incr_avg gauge, data[:value]

      when :_min, :_max
        FnordMetric.error("_min/_max is not yet implemented")

    end
  end

  class EmtpyGauge