Sha256: 7f64b86f8c87506b6c20c4d15860cee5189577465a3763dce5f37685768c3cf3

Contents?: true

Size: 856 Bytes

Versions: 3

Compression:

Stored size: 856 Bytes

Contents

# typed: true

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

3 entries across 3 versions & 1 rubygems

Version Path
ddtrace-1.9.0 lib/datadog/profiling/profiler.rb
ddtrace-1.8.0 lib/datadog/profiling/profiler.rb
ddtrace-1.7.0 lib/datadog/profiling/profiler.rb