class OpenTelemetry::Internal::ProxyTracerProvider
@api private
{ProxyTracerProvider} is an implementation of {OpenTelemetry::Trace::TracerProvider}. It is the default global tracer provider returned by OpenTelemetry.tracer_provider
. It delegates to a “real” TracerProvider after the global tracer provider is registered. It returns {ProxyTracer} instances until the delegate is installed.
Constants
- Key
Public Class Methods
Returns a new {ProxyTracerProvider} instance.
@return [ProxyTracerProvider]
# File lib/opentelemetry/internal/proxy_tracer_provider.rb, line 22 def initialize @mutex = Mutex.new @registry = {} @delegate = nil end
Public Instance Methods
Set the delegate tracer provider. If this is called more than once, a warning will be logged and superfluous calls will be ignored.
@param [TracerProvider] provider The tracer provider to delegate to
# File lib/opentelemetry/internal/proxy_tracer_provider.rb, line 32 def delegate=(provider) unless @delegate.nil? OpenTelemetry.logger.warn 'Attempt to reset delegate in ProxyTracerProvider ignored.' return end @mutex.synchronize do @delegate = provider @registry.each { |key, tracer| tracer.delegate = provider.tracer(key.name, key.version) } end end
Returns a {Tracer} instance.
@param [optional String] name Instrumentation package name @param [optional String] version Instrumentation package version
@return [Tracer]
# File lib/opentelemetry/internal/proxy_tracer_provider.rb, line 50 def tracer(name = nil, version = nil) @mutex.synchronize do return @delegate.tracer(name, version) unless @delegate.nil? @registry[Key.new(name, version)] ||= ProxyTracer.new end end