Sha256: 43ab670df109ca002ee898730084b9d263bd981d35c2109c8adb59f5d64eeba1

Contents?: true

Size: 1.01 KB

Versions: 26

Compression:

Stored size: 1.01 KB

Contents

require 'ddtrace/span'
require 'ddtrace/ext/distributed'

module Datadog
  # DistributedHeaders provides easy access and validation to headers
  class DistributedHeaders
    include Ext::DistributedTracing

    def initialize(env)
      @env = env
    end

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

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

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

    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

    private

    def header(name)
      rack_header = "http-#{name}".upcase!.tr('-', '_')

      @env[rack_header]
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.2 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.15.0.beta1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.0 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.0.rc1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.13.2 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.0.beta2 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.14.0.beta1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.13.1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.13.0 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.12.1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.13.0.beta1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.12.0 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.12.0.rc1 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.11.4 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.11.3 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.12.0.beta2 lib/ddtrace/propagation/distributed_headers.rb
ddtrace-0.12.0.beta1 lib/ddtrace/propagation/distributed_headers.rb