savonarola/pulse_meter_core

View on GitHub
lib/pulse_meter/sensor/timelined/average.rb

Summary

Maintainability
A
0 mins
Test Coverage
module PulseMeter
  module Sensor
    module Timelined
      # Average value over interval
      class Average < Timeline

        def aggregate_event(key, value)
          command_aggregator.hincrby(key, :count, 1)
          command_aggregator.hincrby(key, :sum, value)
        end

        def summarize(key)
          count = redis.hget(key, :count)
          sum = redis.hget(key, :sum)
          if count && !count.empty?
            sum.to_f / count.to_f
          else
            0
          end
        end

        private

        def deflate(value)
          value.to_f
        end

      end
    end
  end
end