class Datadog::GRPCPropagator::Carrier

opentracing.io compliant carrier object

Public Class Methods

new(metadata = {}) click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 34
def initialize(metadata = {})
  @metadata = metadata || {}
end

Public Instance Methods

origin() click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 57
def origin
  value = metadata_for_key(GRPC_METADATA_ORIGIN)
  value if value != ''
end
parent_id() click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 47
def parent_id
  value = metadata_for_key(GRPC_METADATA_PARENT_ID).to_i
  value if (1..Span::EXTERNAL_MAX_ID).cover? value
end
sampling_priority() click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 52
def sampling_priority
  value = metadata_for_key(GRPC_METADATA_SAMPLING_PRIORITY)
  value && value.to_i
end
trace_id() click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 42
def trace_id
  value = metadata_for_key(GRPC_METADATA_TRACE_ID).to_i
  value if (1..Span::EXTERNAL_MAX_ID).cover? value
end
valid?() click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 38
def valid?
  trace_id && parent_id
end

Private Instance Methods

metadata_for_key(key) click to toggle source
# File lib/ddtrace/propagation/grpc_propagator.rb, line 64
def metadata_for_key(key)
  # metadata values can be arrays (multiple headers with the same key)
  value = @metadata[key]
  if value.is_a?(Array)
    value.first
  else
    value
  end
end