Sha256: dd6263600b28102ad685611eae333b23f4b63b837a442693ed6f76496f2884ef
Contents?: true
Size: 811 Bytes
Versions: 2
Compression:
Stored size: 811 Bytes
Contents
module Salus class Accumulator < Metric STORAGE_DEPTH = 1 def push(opts={}, &block) opts = {} unless opts.is_a?(Hash) synchronize do opts.each do |k, v| validate(k, v) @opts[k] = v unless [:value, :ttl, :timestamp].include?(k) end if block_given? v = begin yield rescue Exception => e log DEBUG, e nil end validate(:value, v) opts[:value] = v end prev = @values.empty? ? 0 : (@values.last.value || 0) curr = opts[:value] || 0 @values << Value.new(prev+curr, opts[:timestamp] || Time.now.to_f, opts[:ttl] || @opts[:ttl]) @needs_update = true end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
salus-0.2.1 | lib/salus/metric/accumulator.rb |
salus-0.2.0 | lib/salus/metric/accumulator.rb |