Class: Bigcommerce::Lightstep::Interceptors::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/bigcommerce/lightstep/interceptors/context.rb

Overview

Runs interceptors in a given context

Instance Method Summary collapse

Constructor Details

#initialize(interceptors: nil, logger: nil) ⇒ Context

Initialize the interception context

Parameters:



31
32
33
34
# File 'lib/bigcommerce/lightstep/interceptors/context.rb', line 31

def initialize(interceptors: nil, logger: nil)
  @interceptors = interceptors || ::Bigcommerce::Lightstep.interceptors.all
  @logger = logger || ::Bigcommerce::Lightstep.logger
end

Instance Method Details

#intercept(span) ⇒ Object

Intercept a trace with all interceptors

Parameters:

  • span (::LightStep::Span)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/bigcommerce/lightstep/interceptors/context.rb', line 41

def intercept(span)
  return yield span if @interceptors.none?

  interceptor = @interceptors.pop

  return yield span unless interceptor

  @logger.debug "[bigcommerce-lightstep] Intercepting request with interceptor: #{interceptor.class}"

  interceptor.call(span: span) do |yielded_span|
    if @interceptors.any?
      intercept(yielded_span) { yield yielded_span }
    else
      yield yielded_span
    end
  end
end