class Bigcommerce::Lightstep::Interceptors::Context

Runs interceptors in a given context

Public Class Methods

new(interceptors: nil, logger: nil) click to toggle source

Initialize the interception context

@param [Array<Bigcommerce::Lightstep::Interceptors::Base>] interceptors @param [::Logger] logger

# 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

Public Instance Methods

intercept(span) { |span| ... } click to toggle source

Intercept a trace with all interceptors

@param [::LightStep::Span] span

# 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