class Protor::Registry

Constants

DEFAULT_BUCKET

Attributes

families[R]

Public Class Methods

new() click to toggle source
# File lib/protor/registry.rb, line 10
def initialize
  @families = {}
end

Public Instance Methods

counter(metric_name, value, labels = {}) click to toggle source
# File lib/protor/registry.rb, line 14
def counter(metric_name, value, labels = {})
  labels = stringify(labels)
  fam = family(metric_name, :counter)

  if (entry = fam[labels])
    entry.value += value
  else
    fam[labels] = Entry.new(metric_name, :c, value, labels)
  end
end
each() { |e| ... } click to toggle source
# File lib/protor/registry.rb, line 48
def each
  families.each_value do |family|
    if family.type == :histogram
      family.each{ |arr| arr.each{ |e| yield(e) }}
    else
      family.each{ |e| yield(e) }
    end
  end
end
empty?() click to toggle source
# File lib/protor/registry.rb, line 62
def empty?
  families.empty?
end
gauge(metric_name, value, labels = {}) click to toggle source
# File lib/protor/registry.rb, line 25
def gauge(metric_name, value, labels = {})
  labels = stringify(labels)
  fam = family(metric_name, :gauge)

  if (entry = fam[labels])
    entry.value = value
  else
    fam[labels] = Entry.new(metric_name, :g, value, labels)
  end
end
histogram(metric_name, value, labels = {}, buckets = DEFAULT_BUCKET) click to toggle source
# File lib/protor/registry.rb, line 36
def histogram(metric_name, value, labels = {}, buckets = DEFAULT_BUCKET)
  labels = stringify(labels)
  fam = family(metric_name, :histogram)

  entry = Entry.new(metric_name, :h, value, labels, buckets)
  if (array = fam[labels])
    array << entry
  else
    fam[labels] = [ entry ]
  end
end
reset() click to toggle source
# File lib/protor/registry.rb, line 58
def reset
  @families = {}
end

Private Instance Methods

family(name, type) click to toggle source
# File lib/protor/registry.rb, line 77
def family(name, type)
  families[name] ||= EntryFamily.new(name, type)
  family = families[name]
  raise IncompatibleTypeError.new(name, family.type, type) if family.type != type

  return family
end
stringify(labels) click to toggle source
# File lib/protor/registry.rb, line 68
def stringify(labels)
  {}.tap do |h|
    labels.each do |k, v|
      val = v.to_s
      h[k.to_s] = val unless val.empty?
    end
  end
end