class OpenTelemetry::Trace::Tracestate

specification www.w3.org/TR/trace-context/
string key/value pairs and formally defined by the W3C Trace Context
Tracestate is a part of SpanContext, represented by an immutable list of

def ==(other)

Returns:
  • (Boolean) - true if this Tracestate == other, else false.

Parameters:
  • other (Tracestate) -- The Tracestate for comparison.
def ==(other)
  @hash == other.to_h
end

def create(hash)

Other tags:
    Api: - private
def create(hash)
  new(hash)
end

def delete(key)

Returns:
  • (Tracestate) - self, if unchanged, or a new Tracestate without

Parameters:
  • key (String) -- The key to remove.
def delete(key)
  return self unless @hash.key?(key)
  h = Hash[@hash]
  h.delete(key)
  self.class.create(h)
end

def empty?

Returns:
  • (Boolean) - true if this Tracestate is empty, else false.
def empty?
  @hash.empty?
end

def from_hash(hash)

Returns:
  • (Tracestate) - A new Tracestate instance or DEFAULT

Parameters:
  • hash (Hash) -- Key-value pairs to store in the
def from_hash(hash)
  hash = hash.select do |k, v|
    valid = VALID_KEY.match?(k) && VALID_VALUE.match?(v)
    OpenTelemetry.logger.debug("Invalid Tracestate member - #{k} : #{v}") unless valid
    valid
  end
  new(hash)
end

def from_string(header) # rubocop:disable Metrics/CyclomaticComplexity:

Returns:
  • (Tracestate) - A new Tracestate instance or DEFAULT

Parameters:
  • header (String) -- Encoding of the tracestate header defined by
def from_string(header) # rubocop:disable Metrics/CyclomaticComplexity:
  return DEFAULT if header.nil? || header.empty?
  hash = header.split(',').each_with_object({}) do |member, memo|
    member.strip!
    kv = member.split('=')
    k, v = *kv
    next unless kv.length == 2 && VALID_KEY.match?(k) && VALID_VALUE.match?(v)
    memo[k] = v
  end
  return DEFAULT if hash.empty?
  new(hash)
end

def initialize(hash)

Returns:
  • (Tracestate) -

Parameters:
  • hash (Hash) -- Key-value pairs

Other tags:
    Api: - private
def initialize(hash)
  excess = hash.size - MAX_MEMBER_COUNT
  hash = Hash[hash.drop(excess)] if excess.positive?
  @hash = hash.freeze
end

def set_value(key, value)

Returns:
  • (Tracestate) - self, if unchanged, or a new Tracestate containing

Parameters:
  • value (String) -- The value to add or update.
  • key (String) -- The key to add or update.
def set_value(key, value)
  unless VALID_KEY.match?(key) && VALID_VALUE.match?(value)
    OpenTelemetry.logger.debug("Invalid Tracestate member - #{key} : #{value}")
    return self
  end
  h = Hash[@hash]
  h[key] = value
  self.class.create(h)
end

def to_h

Returns:
  • (Hash) - the members of this Tracestate
def to_h
  @hash.dup
end

def to_s

Returns:
  • (String) - this Tracestate encoded as a string.
def to_s
  @hash.inject(+'') do |memo, (k, v)|
    memo << k << '=' << v << ','
  end.chop! || ''
end

def value(key)

Returns:
  • (String) - The value associated with the key, or nil.

Parameters:
  • key (String) -- The key to lookup.
def value(key)
  @hash[key]
end