Sha256: d231201a7f4a3c99fb64dc354e08ed1803325f5ee11d84397c4210a29a5cb099

Contents?: true

Size: 841 Bytes

Versions: 10

Compression:

Stored size: 841 Bytes

Contents

module Datadog
  module Profiling
    # Profiling entry point, which coordinates collectors and a scheduler
    class Profiler
      include Datadog::Core::Utils::Forking

      attr_reader \
        :collectors,
        :scheduler

      def initialize(collectors, scheduler)
        @collectors = collectors
        @scheduler = scheduler
      end

      def start
        after_fork! do
          collectors.each(&:reset_after_fork)
          scheduler.reset_after_fork
        end

        collectors.each(&:start)
        scheduler.start
      end

      def shutdown!
        Datadog.logger.debug('Shutting down profiler')

        collectors.each do |collector|
          collector.enabled = false
          collector.stop(true)
        end

        scheduler.enabled = false
        scheduler.stop(true)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ddtrace-1.14.0 lib/datadog/profiling/profiler.rb
ddtrace-1.13.1 lib/datadog/profiling/profiler.rb
ddtrace-1.13.0 lib/datadog/profiling/profiler.rb
ddtrace-1.12.1 lib/datadog/profiling/profiler.rb
ddtrace-1.12.0 lib/datadog/profiling/profiler.rb
ddtrace-1.11.1 lib/datadog/profiling/profiler.rb
ddtrace-1.11.0 lib/datadog/profiling/profiler.rb
ddtrace-1.11.0.beta1 lib/datadog/profiling/profiler.rb
ddtrace-1.10.1 lib/datadog/profiling/profiler.rb
ddtrace-1.10.0 lib/datadog/profiling/profiler.rb