Sha256: 275549074ba9c044c749237e25055354d1efbf77e2c6c165865c48a76c9b7c5b

Contents?: true

Size: 1.02 KB

Versions: 11

Compression:

Stored size: 1.02 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'new_relic/agent/stats_engine/metric_stats'
require 'new_relic/agent/stats_engine/samplers'
require 'new_relic/agent/stats_engine/transactions'
require 'new_relic/agent/stats_engine/gc_profiler'
require 'new_relic/agent/stats_engine/stats_hash'

module NewRelic
  module Agent
    # This class handles all the statistics gathering for the agent
    class StatsEngine
      include MetricStats
      include Samplers
      include Transactions

      def initialize
        # Makes the unit tests happy
        Thread::current[:newrelic_scope_stack] = nil
        @stats_lock = Mutex.new
        @stats_hash = StatsHash.new
        start_sampler_thread
      end

      # All access to the @stats_hash ivar should be funnelled through this
      # method to ensure thread-safety. 
      def with_stats_lock
        @stats_lock.synchronize { yield }
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
newrelic_rpm-3.6.3.104 lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.3.103.beta lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.2.96 lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.2.90.beta lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.1.88 lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.1.87 lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.1.86.beta lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.1.85.beta lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.0.83 lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.0.78 lib/new_relic/agent/stats_engine.rb
newrelic_rpm-3.6.0.74.beta lib/new_relic/agent/stats_engine.rb