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

Breadcrumb

  1. Drupal Core 11.1.x

Configurator.php

Same filename in this branch
  1. 11.1.x vendor/open-telemetry/sdk/Common/InstrumentationScope/Configurator.php

Namespace

OpenTelemetry\API\Instrumentation

File

vendor/open-telemetry/api/Instrumentation/Configurator.php

View source
<?php

declare (strict_types=1);
namespace OpenTelemetry\API\Instrumentation;

use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
use OpenTelemetry\API\Logs\LoggerProviderInterface;
use OpenTelemetry\API\Logs\NoopEventLoggerProvider;
use OpenTelemetry\API\Logs\NoopLoggerProvider;
use OpenTelemetry\API\Metrics\MeterProviderInterface;
use OpenTelemetry\API\Metrics\Noop\NoopMeterProvider;
use OpenTelemetry\API\Trace\NoopTracerProvider;
use OpenTelemetry\API\Trace\TracerProviderInterface;
use OpenTelemetry\Context\Context;
use OpenTelemetry\Context\ContextInterface;
use OpenTelemetry\Context\ImplicitContextKeyedInterface;
use OpenTelemetry\Context\Propagation\NoopTextMapPropagator;
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
use OpenTelemetry\Context\ScopeInterface;

/**
 * Configures the global (context scoped) instrumentation instances.
 *
 * @see Configurator::activate()
 */
final class Configurator implements ImplicitContextKeyedInterface {
    private ?TracerProviderInterface $tracerProvider = null;
    private ?MeterProviderInterface $meterProvider = null;
    private ?TextMapPropagatorInterface $propagator = null;
    private ?LoggerProviderInterface $loggerProvider = null;
    private ?EventLoggerProviderInterface $eventLoggerProvider = null;
    private function __construct() {
    }
    
    /**
     * Creates a configurator that uses parent instances for not configured values.
     */
    public static function create() : Configurator {
        return new self();
    }
    
    /**
     * Creates a configurator that uses noop instances for not configured values.
     */
    public static function createNoop() : Configurator {
        return self::create()->withTracerProvider(new NoopTracerProvider())
            ->withMeterProvider(new NoopMeterProvider())
            ->withPropagator(new NoopTextMapPropagator())
            ->withLoggerProvider(NoopLoggerProvider::getInstance())
            ->withEventLoggerProvider(new NoopEventLoggerProvider());
    }
    public function activate() : ScopeInterface {
        return $this->storeInContext()
            ->activate();
    }
    public function storeInContext(?ContextInterface $context = null) : ContextInterface {
        $context ??= Context::getCurrent();
        if ($this->tracerProvider !== null) {
            $context = $context->with(ContextKeys::tracerProvider(), $this->tracerProvider);
        }
        if ($this->meterProvider !== null) {
            $context = $context->with(ContextKeys::meterProvider(), $this->meterProvider);
        }
        if ($this->propagator !== null) {
            $context = $context->with(ContextKeys::propagator(), $this->propagator);
        }
        if ($this->loggerProvider !== null) {
            $context = $context->with(ContextKeys::loggerProvider(), $this->loggerProvider);
        }
        if ($this->eventLoggerProvider !== null) {
            $context = $context->with(ContextKeys::eventLoggerProvider(), $this->eventLoggerProvider);
        }
        return $context;
    }
    public function withTracerProvider(?TracerProviderInterface $tracerProvider) : Configurator {
        $self = clone $this;
        $self->tracerProvider = $tracerProvider;
        return $self;
    }
    public function withMeterProvider(?MeterProviderInterface $meterProvider) : Configurator {
        $self = clone $this;
        $self->meterProvider = $meterProvider;
        return $self;
    }
    public function withPropagator(?TextMapPropagatorInterface $propagator) : Configurator {
        $self = clone $this;
        $self->propagator = $propagator;
        return $self;
    }
    public function withLoggerProvider(?LoggerProviderInterface $loggerProvider) : Configurator {
        $self = clone $this;
        $self->loggerProvider = $loggerProvider;
        return $self;
    }
    public function withEventLoggerProvider(?EventLoggerProviderInterface $eventLoggerProvider) : Configurator {
        $self = clone $this;
        $self->eventLoggerProvider = $eventLoggerProvider;
        return $self;
    }

}

Classes

Title Deprecated Summary
Configurator Configures the global (context scoped) instrumentation instances.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal