Sha256: 288460dad81331553292833e63f65314a1f4eb694eb5ae74dc1ef3a8d7a90218
Contents?: true
Size: 1.77 KB
Versions: 3
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true # The Datagram class parses and inspects a StatsD datagrans # # @note This class is part of the new Client implementation that is intended # to become the new default in the next major release of this library. class StatsD::Instrument::Datagram attr_reader :source def initialize(source) @source = source end # @return [Float] The sample rate at which this datagram was emitted, between 0 and 1. def sample_rate parsed_datagram[:sample_rate] ? Float(parsed_datagram[:sample_rate]) : 1.0 end def type @type ||= parsed_datagram[:type].to_sym end def name parsed_datagram[:name] end def value @value ||= case type when :c Integer(parsed_datagram[:value]) when :g, :h, :d, :kv, :ms Float(parsed_datagram[:value]) when :s String(parsed_datagram[:value]) else parsed_datagram[:value] end end def tags @tags ||= parsed_datagram[:tags] ? parsed_datagram[:tags].split(',') : nil end def inspect "#<#{self.class.name}:\"#{@source}\">" end def hash source.hash end def eql?(other) case other when StatsD::Instrument::Datagram source == other.source when String source == other else false end end alias_method :==, :eql? private PARSER = %r{ \A (?<name>[^\:\|\@]+)\:(?<value>[^\:\|\@]+)\|(?<type>c|ms|g|s|h|d) (?:\|\@(?<sample_rate>\d*(?:\.\d*)?))? (?:\|\#(?<tags>(?:[^\|,]+(?:,[^\|,]+)*)))? \n? # In some implementations, the datagram may include a trailing newline. \z }x private_constant :PARSER def parsed_datagram @parsed ||= if (match_info = PARSER.match(@source)) match_info else raise ArgumentError, "Invalid StatsD datagram: #{@source}" end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
statsd-instrument-2.8.0 | lib/statsd/instrument/datagram.rb |
statsd-instrument-2.7.1 | lib/statsd/instrument/datagram.rb |
statsd-instrument-2.7.0 | lib/statsd/instrument/datagram.rb |