Sha256: 7baafb22fe9d913004ab444ac22e9e2f1707f86ad2a38a7d7cb8a24ee3533910

Contents?: true

Size: 759 Bytes

Versions: 2

Compression:

Stored size: 759 Bytes

Contents

# frozen_string_literal: true

module ElasticAPM
  # @api private
  module ChildDurations
    # @api private
    module Methods
      def child_durations
        @child_durations ||= Durations.new
      end

      def child_started
        child_durations.start
      end

      def child_stopped
        child_durations.stop
      end
    end

    # @api private
    class Durations
      def initialize
        @nesting_level = 0
        @start = nil
        @duration = 0
      end

      attr_reader :duration

      def start
        @nesting_level += 1
        @start = Util.micros if @nesting_level == 1
      end

      def stop
        @nesting_level -= 1
        @duration = (Util.micros - @start) if @nesting_level == 0
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
elastic-apm-3.3.0 lib/elastic_apm/child_durations.rb
elastic-apm-3.2.0 lib/elastic_apm/child_durations.rb