module FFWD::Plugin::Statsd::Parser

Constants

COUNT
HISTOGRAM
RATE

Public Class Methods

count(name, value) click to toggle source
# File lib/ffwd/plugin/statsd/parser.rb, line 28
def self.count name, value
  {:proc => COUNT, :key => name, :value => value}
end
gauge(name, value) click to toggle source
# File lib/ffwd/plugin/statsd/parser.rb, line 24
def self.gauge name, value
  {:proc => nil, :key => name, :value => value}
end
meter(name, value) click to toggle source
# File lib/ffwd/plugin/statsd/parser.rb, line 32
def self.meter name, value
  {:proc => RATE, :key => name, :value => value}
end
parse(m) click to toggle source
# File lib/ffwd/plugin/statsd/parser.rb, line 40
def self.parse m
  name, value = m.split ':', 2

  if value.nil?
    raise ParserError.new("Missing value")
  end

  value, type_block = value.split '|', 2

  if type_block.nil?
    raise ParserError.new("Missing type")
  end

  type, sample_rate = type_block.split '|@', 2

  if type.nil? or type.empty?
    raise ParserError.new("Missing type")
  end

  if value.nil? or value.empty?
    raise ParserError.new("Missing value")
  end

  value = value.to_f

  sample_rate = sample_rate.to_f unless sample_rate.nil?

  value /= sample_rate unless sample_rate.nil?

  if type == "g"
    return gauge(name, value)
  end

  if type == "c"
    return count(name, value)
  end

  if type == "m"
    return meter(name, value)
  end

  if type == "ms" or type == "h"
    return timing(name, value)
  end

  raise ParserError.new(
    "Received message of unsupported type '#{type}'")
end
timing(name, value) click to toggle source
# File lib/ffwd/plugin/statsd/parser.rb, line 36
def self.timing name, value
  {:proc => HISTOGRAM, :key => name, :value => value}
end