class Atatus::Collector::TxnHist

Attributes

hist[R]
kind[R]
type[R]

Public Class Methods

new(type, kind, duration) click to toggle source
# File lib/atatus/collector/hist.rb, line 5
def initialize(type, kind, duration)
  @type = type
  @kind = kind
  @hist = {}
  @hist[find_bin duration] = 1
end

Public Instance Methods

aggregate!(duration) click to toggle source
# File lib/atatus/collector/hist.rb, line 14
def aggregate!(duration)
  hbin = find_bin duration
  if !@hist.key?(hbin)
    @hist[hbin] = 1
  else
    @hist[hbin] += 1
  end
end

Private Instance Methods

find_bin(duration) click to toggle source
# File lib/atatus/collector/hist.rb, line 24
def find_bin(duration)
  seconds = 1000
  hbin = 0

  if duration < 0
    hbin = 0
  elsif duration < 2*seconds
    hbin = round_bin(duration, 10)
  elsif duration < 10*seconds
    hbin = round_bin(duration, 25)
  elsif duration < 20*seconds
    hbin = round_bin(duration, 50)
  elsif duration < 50*seconds
    hbin = round_bin(duration, 100)
  elsif duration < 80*seconds
    hbin = round_bin(duration, 200)
  elsif duration < 100*seconds
    hbin = round_bin(duration, 250)
  else
    hbin = round_bin(duration, 1000)
  end

  hbin
end
round_bin(duration, unit) click to toggle source
# File lib/atatus/collector/hist.rb, line 49
def round_bin(duration, unit)
  ((duration / unit.to_f).floor) * unit
end