# frozen_string_literal: true # Copyright 2019 OpenTelemetry Authors # # SPDX-License-Identifier: Apache-2.0 module OpenTelemetry # The Trace API allows recording a set of events, triggered as a result of a # single logical operation, consolidated across various components of an # application. module Trace # An invalid trace identifier, a 16-byte array with all zero bytes, encoded # as a hexadecimal string. INVALID_TRACE_ID = ('0' * 32).freeze # An invalid span identifier, an 8-byte array with all zero bytes, encoded # as a hexadecimal string. INVALID_SPAN_ID = ('0' * 16).freeze # Generates a valid trace identifier, a 16-byte array with at least one # non-zero byte, encoded as a hexadecimal string. # # @return [String] a hexadecimal string encoding of a valid trace ID. def self.generate_trace_id loop do id = Random::DEFAULT.bytes(16).unpack1('H*') return id unless id == INVALID_TRACE_ID end end # Generates a valid span identifier, an 8-byte array with at least one # non-zero byte, encoded as a hexadecimal string. # # @return [String] a hexadecimal string encoding of a valid span ID. def self.generate_span_id loop do id = Random::DEFAULT.bytes(8).unpack1('H*') return id unless id == INVALID_SPAN_ID end end end end require 'opentelemetry/trace/event' require 'opentelemetry/trace/link' require 'opentelemetry/trace/propagation' require 'opentelemetry/trace/trace_flags' require 'opentelemetry/trace/span_context' require 'opentelemetry/trace/span_kind' require 'opentelemetry/trace/span' require 'opentelemetry/trace/status' require 'opentelemetry/trace/tracer' require 'opentelemetry/trace/tracer_provider'