Sha256: fab3abe55ea3deca0f6cce34166fc2f1b204ab5a4bcd105c6f6c7364ef5727b7

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

require File.join(File.dirname(__FILE__), 'time_units')

require File.join(File.dirname(__FILE__), 'statistics', 'sample')
require File.join(File.dirname(__FILE__), 'statistics', 'uniform_sample')
require File.join(File.dirname(__FILE__), 'statistics', 'exponential_sample')

require File.join(File.dirname(__FILE__), 'instruments', 'base')
require File.join(File.dirname(__FILE__), 'instruments', 'counter')
require File.join(File.dirname(__FILE__), 'instruments', 'meter')
require File.join(File.dirname(__FILE__), 'instruments', 'gauge')
require File.join(File.dirname(__FILE__), 'instruments', 'histogram')
require File.join(File.dirname(__FILE__), 'instruments', 'timer')


require 'json'

module Metrics
  module Instruments
    @instruments = {}
    
    @types = {
      :counter                => Counter,
      :meter                  => Meter,
      :gauge                  => Gauge,
      :exponential_histogram  => ExponentialHistogram,
      :uniform_histogram      => UniformHistogram
    }
    
    def self.register(type, name, &block)
      @instruments[name] = @types[type].new(&block)
    end
    
    def self.unregister_all
      @instruments = {}
    end
    
    def self.registered
      @instruments
    end
    
    def self.to_json
      @instruments.to_json 
    end
    
    module TypeMethods
      
      def register(type, name, &block)
        Metrics::Instruments.register(type, name, &block)
      end
      
      def counter(name)
        register(:counter, name)
      end
      
      def meter(name)
        register(:meter, name)
      end
      
      def gauge(name, &block)
        register(:gauge, name, &block)
      end
      
      def uniform_histogram(name)
        register(:uniform_histogram, name)
      end
      
      # For backwards compatibility
      alias_method :histogram, :uniform_histogram
      
      def exponential_histogram(name)
        register(:exponential_histogram, name)
      end
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-metrics-0.7.0 lib/ruby-metrics/instruments.rb