Class: OpenTelemetry::Internal::ProxyTracerProvider Private
- Inherits:
-
Trace::TracerProvider
- Object
- Trace::TracerProvider
- OpenTelemetry::Internal::ProxyTracerProvider
- Defined in:
- lib/opentelemetry/internal/proxy_tracer_provider.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
ProxyTracerProvider is an implementation of 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.
Instance Method Summary collapse
-
#delegate=(provider) ⇒ Object
private
Set the delegate tracer provider.
-
#initialize ⇒ ProxyTracerProvider
constructor
private
Returns a new ProxyTracerProvider instance.
-
#tracer(deprecated_name = nil, deprecated_version = nil, name: nil, version: nil, attributes: nil) ⇒ Tracer
private
Returns a Tracer instance.
Constructor Details
#initialize ⇒ ProxyTracerProvider
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new OpenTelemetry::Internal::ProxyTracerProvider instance.
35 36 37 38 39 |
# File 'lib/opentelemetry/internal/proxy_tracer_provider.rb', line 35 def initialize @mutex = Mutex.new @registry = {} @delegate = nil end |
Instance Method Details
#delegate=(provider) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Set the delegate tracer provider. If this is called more than once, a warning will be logged and superfluous calls will be ignored.
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/opentelemetry/internal/proxy_tracer_provider.rb', line 45 def delegate=(provider) unless @delegate.nil? OpenTelemetry.logger.warn 'Attempt to reset delegate in ProxyTracerProvider ignored.' return end provider = LegacyProviderWrapper.new(provider) unless supports_attributes?(provider) @mutex.synchronize do @delegate = provider @registry.each { |key, tracer| tracer.delegate = @delegate.tracer(key.name, key.version, attributes: key.attributes) } end end |
#tracer(deprecated_name = nil, deprecated_version = nil, name: nil, version: nil, attributes: nil) ⇒ Tracer
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a Tracer instance.
Supports both positional arguments (legacy) and keyword arguments:
tracer('name', '1.0') # legacy positional
tracer(name: 'name', version: '1.0', attributes: {...}) # keyword
When both positional and keyword arguments are provided for the same parameter, the keyword argument takes precedence.
74 75 76 77 78 79 80 81 82 |
# File 'lib/opentelemetry/internal/proxy_tracer_provider.rb', line 74 def tracer(deprecated_name = nil, deprecated_version = nil, name: nil, version: nil, attributes: nil) name ||= deprecated_name version ||= deprecated_version @mutex.synchronize do return @delegate.tracer(name, version, attributes: attributes) unless @delegate.nil? @registry[Key.new(name, version, attributes)] ||= ProxyTracer.new end end |