Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. RandomIdGenerator.php

class RandomIdGenerator

Hierarchy

  • class \OpenTelemetry\SDK\Trace\RandomIdGenerator implements \OpenTelemetry\SDK\Trace\IdGeneratorInterface

Expanded class hierarchy of RandomIdGenerator

File

vendor/open-telemetry/sdk/Trace/RandomIdGenerator.php, line 10

Namespace

OpenTelemetry\SDK\Trace
View source
class RandomIdGenerator implements IdGeneratorInterface {
    private const TRACE_ID_HEX_LENGTH = 32;
    private const SPAN_ID_HEX_LENGTH = 16;
    public function generateTraceId() : string {
        do {
            $traceId = $this->randomHex(self::TRACE_ID_HEX_LENGTH);
        } while (!SpanContextValidator::isValidTraceId($traceId));
        return $traceId;
    }
    public function generateSpanId() : string {
        do {
            $spanId = $this->randomHex(self::SPAN_ID_HEX_LENGTH);
        } while (!SpanContextValidator::isValidSpanId($spanId));
        return $spanId;
    }
    
    /**
     * @psalm-suppress ArgumentTypeCoercion $hexLength is always a positive integer
     */
    private function randomHex(int $hexLength) : string {
        try {
            return bin2hex(random_bytes(intdiv($hexLength, 2)));
        } catch (Throwable) {
            return $this->fallbackAlgorithm($hexLength);
        }
    }
    private function fallbackAlgorithm(int $hexLength) : string {
        return substr(str_shuffle(str_repeat('0123456789abcdef', $hexLength)), 1, $hexLength);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
RandomIdGenerator::fallbackAlgorithm private function
RandomIdGenerator::generateSpanId public function Overrides IdGeneratorInterface::generateSpanId
RandomIdGenerator::generateTraceId public function Overrides IdGeneratorInterface::generateTraceId
RandomIdGenerator::randomHex private function @psalm-suppress ArgumentTypeCoercion $hexLength is always a positive integer
RandomIdGenerator::SPAN_ID_HEX_LENGTH private constant
RandomIdGenerator::TRACE_ID_HEX_LENGTH private constant
RSS feed
Powered by Drupal