Sha256: 541cb930944c44b930071bd421de200402130bb586fe981db567547e30435862

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

#
# Copyright (c) 2012 Lorenzo Pasqualis - DreamBox Learning, Inc
# https://github.com/lpasqualis/rubyperf
#

module Perf

  # Simple Perf::Meter factory and singleton management.
  # Useful to not have to pass around Perf::Meter objects and still be able to generate stats in various parts of
  # the code.

  class MeterFactory

    DEFAULT_METER = :default

    @@perf_meters=nil

    # Returns a Perf::Meter with a given key, and creates it lazly if it doesn't exist'.
    def self.get(key=DEFAULT_METER)
      @@perf_meters ||= {}
      @@perf_meters[key] ||= Perf::Meter.new
    end

    # Pushes a Perf::Meter into a key
    def self.set_meter(key,meter)
      @@perf_meters ||= {}
      @@perf_meters[key]=meter
    end

    # Sets the default meter.
    def self.set_default(meter)
      set_meter(DEFAULT_METER,meter)
    end

    def self.all
      @@perf_meters ||= {}
      return @@perf_meters.clone
    end

    def self.clear_meter(key=DEFAULT_METER)
      @@perf_meters.delete(key) if @@perf_meters
    end

    def self.clear_all!
      @@perf_meters=nil
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rubyperf-1.0.1 lib/perf/meter_factory.rb
rubyperf-1.0.0 lib/perf/meter_factory.rb