Sha256: f2449ece1aa37c97c7c174bf3dfc8b707ee2b69a2efbbdd2f44b524bd3167719

Contents?: true

Size: 1.54 KB

Versions: 7

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

require_relative 'scope_manager/scope_stack'
require_relative 'scope_manager/scope_identifier'

class OpenTracingTestTracer
  # ScopeManager represents an OpenTracing ScopeManager
  #
  # See http://www.opentracing.io for more information.
  #
  # The ScopeManager interface abstracts both the activation of Span instances
  # via ScopeManager#activate and access to an active Span/Scope via
  # ScopeManager#active
  #
  class ScopeManager
    def initialize
      @scope_stack = ScopeStack.new
    end

    # Make a span instance active
    #
    # @param span [Span] the Span that should become active
    # @param finish_on_close [Boolean] whether the Span should automatically be
    #   finished when Scope#close is called
    # @return [Scope] instance to control the end of the active period for the
    #  Span. It is a programming error to neglect to call Scope#close on the
    #  returned instance.
    def activate(span, finish_on_close: true)
      return active if active && active.span == span
      scope = Scope.new(span, @scope_stack, finish_on_close: finish_on_close)
      @scope_stack.push(scope)
      scope
    end

    # Return active scope
    #
    # If there is a non-null Scope, its wrapped Span becomes an implicit parent
    # (as Reference#CHILD_OF) of any newly-created Span at
    # Tracer#start_active_span or Tracer#start_span time.
    #
    # @return [Scope] the currently active Scope which can be used to access the
    #   currently active Span.
    def active
      @scope_stack.peek
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
signalfx_test_tracer-0.1.4 lib/signalfx_test_tracer/scope_manager.rb
signalfx_test_tracer-0.1.3 lib/signalfx_test_tracer/scope_manager.rb
signalfx_test_tracer-0.1.2 lib/signalfx_test_tracer/scope_manager.rb
signalfx_test_tracer-0.1.1 lib/signalfx_test_tracer/scope_manager.rb
signalfx_test_tracer-0.1.0 lib/signalfx_test_tracer/scope_manager.rb
opentracing_test_tracer-0.1.1 lib/opentracing_test_tracer/scope_manager.rb
opentracing_test_tracer-0.1.0 lib/opentracing_test_tracer/scope_manager.rb