Class: Datadog::DistributedHeaders

Inherits:
Object
  • Object
show all
Includes:
Ext::DistributedTracing
Defined in:
lib/ddtrace/propagation/distributed_headers.rb

Overview

DistributedHeaders provides easy access and validation to headers

Constant Summary

Constants included from Ext::DistributedTracing

Ext::DistributedTracing::HTTP_HEADER_PARENT_ID, Ext::DistributedTracing::HTTP_HEADER_SAMPLING_PRIORITY, Ext::DistributedTracing::HTTP_HEADER_TRACE_ID, Ext::DistributedTracing::SAMPLING_PRIORITY_KEY

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ DistributedHeaders

Returns a new instance of DistributedHeaders.



9
10
11
# File 'lib/ddtrace/propagation/distributed_headers.rb', line 9

def initialize(env)
  @env = env
end

Instance Method Details

#parent_idObject



24
25
26
27
28
# File 'lib/ddtrace/propagation/distributed_headers.rb', line 24

def parent_id
  value = header(HTTP_HEADER_PARENT_ID).to_i
  return if value <= 0 || value >= Span::MAX_ID
  value
end

#sampling_priorityObject



30
31
32
33
34
35
36
37
38
# File 'lib/ddtrace/propagation/distributed_headers.rb', line 30

def sampling_priority
  hdr = header(HTTP_HEADER_SAMPLING_PRIORITY)
  # It's important to make a difference between no header,
  # and a header defined to zero.
  return unless hdr
  value = hdr.to_i
  return if value < 0
  value
end

#trace_idObject



18
19
20
21
22
# File 'lib/ddtrace/propagation/distributed_headers.rb', line 18

def trace_id
  value = header(HTTP_HEADER_TRACE_ID).to_i
  return if value <= 0 || value >= Span::MAX_ID
  value
end

#valid?Boolean

Returns:

  • (Boolean)


13
14
15
16
# File 'lib/ddtrace/propagation/distributed_headers.rb', line 13

def valid?
  # Sampling priority is optional.
  trace_id && parent_id
end