Sha256: 63edc24b16e9be8c9e4734d2c30d4d0062732014e57ac86a6c851f770f334f89

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

require 'logger'
require_relative 'reported_methods_handler'
require_relative 'reported_method'

module Timeasure
  module Profiling
    class Manager
      class << self
        def prepare
          Timeasure.configuration.reported_methods_handler_set_proc.call(ReportedMethodsHandler.new)
        end

        def report(measurement)
          handler = reported_methods_handler
          handler.nil? ? warn_unprepared_handler : handler.report(measurement)
        end

        def export
          handler = reported_methods_handler
          handler.nil? ? warn_unprepared_handler : handler.export
        end

        private

        def reported_methods_handler
          Timeasure.configuration.reported_methods_handler_get_proc.call
        end

        def warn_unprepared_handler
          logger.warn("#{self} is not prepared. Call Timeasure::Profiling::Manager.prepare before trying to report measurements or export reported methods.")
        end

        def logger
          @logger ||= Logger.new(STDOUT)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
timeasure-0.2.1 lib/timeasure/profiling/manager.rb
timeasure-0.2.0 lib/timeasure/profiling/manager.rb
timeasure-0.1.1 lib/timeasure/profiling/manager.rb
timeasure-0.1.0 lib/timeasure/profiling/manager.rb