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)
-
(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)
- Api: - private
def create(hash) new(hash) end
def delete(key)
-
(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?
-
(Boolean)
- true if this Tracestate is empty, else false.
def empty? @hash.empty? end
def from_hash(hash)
-
(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:
-
(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)
-
(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)
-
(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
-
(Hash)
- the members of this Tracestate
def to_h @hash.dup end
def to_s
-
(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)
-
(String)
- The value associated with the key, or nil.
Parameters:
-
key
(String
) -- The key to lookup.
def value(key) @hash[key] end