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

Breadcrumb

  1. Drupal Core 11.1.x

MultiSpanProcessor.php

Namespace

OpenTelemetry\SDK\Trace\SpanProcessor

File

vendor/open-telemetry/sdk/Trace/SpanProcessor/MultiSpanProcessor.php

View source
<?php

declare (strict_types=1);
namespace OpenTelemetry\SDK\Trace\SpanProcessor;

use OpenTelemetry\Context\ContextInterface;
use OpenTelemetry\SDK\Common\Future\CancellationInterface;
use OpenTelemetry\SDK\Trace\ReadableSpanInterface;
use OpenTelemetry\SDK\Trace\ReadWriteSpanInterface;
use OpenTelemetry\SDK\Trace\SpanProcessorInterface;

/**
 * Class SpanMultiProcessor is a SpanProcessor that forwards all events to an
 * array of SpanProcessors.
 */
final class MultiSpanProcessor implements SpanProcessorInterface {
    
    /** @var list<SpanProcessorInterface> */
    private array $processors = [];
    public function __construct(SpanProcessorInterface ...$spanProcessors) {
        foreach ($spanProcessors as $processor) {
            $this->addSpanProcessor($processor);
        }
    }
    public function addSpanProcessor(SpanProcessorInterface $processor) : void {
        $this->processors[] = $processor;
    }
    
    /** @return list<SpanProcessorInterface> */
    public function getSpanProcessors() : array {
        return $this->processors;
    }
    
    /** @inheritDoc */
    public function onStart(ReadWriteSpanInterface $span, ContextInterface $parentContext) : void {
        foreach ($this->processors as $processor) {
            $processor->onStart($span, $parentContext);
        }
    }
    
    /** @inheritDoc */
    public function onEnd(ReadableSpanInterface $span) : void {
        foreach ($this->processors as $processor) {
            $processor->onEnd($span);
        }
    }
    
    /** @inheritDoc */
    public function shutdown(?CancellationInterface $cancellation = null) : bool {
        $result = true;
        foreach ($this->processors as $processor) {
            $result = $result && $processor->shutdown();
        }
        return $result;
    }
    
    /** @inheritDoc */
    public function forceFlush(?CancellationInterface $cancellation = null) : bool {
        $result = true;
        foreach ($this->processors as $processor) {
            $result = $result && $processor->forceFlush();
        }
        return $result;
    }

}

Classes

Title Deprecated Summary
MultiSpanProcessor Class SpanMultiProcessor is a SpanProcessor that forwards all events to an array of SpanProcessors.

API Navigation

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