opentelemetry-php/src/Config/SDK/ComponentProvider/Trace/SpanProcessorSimple.php

46 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace OpenTelemetry\Config\SDK\ComponentProvider\Trace;
use OpenTelemetry\API\Configuration\Config\ComponentPlugin;
use OpenTelemetry\API\Configuration\Config\ComponentProvider;
use OpenTelemetry\API\Configuration\Config\ComponentProviderRegistry;
use OpenTelemetry\API\Configuration\Context;
use OpenTelemetry\SDK\Trace\SpanExporterInterface;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\SpanProcessorInterface;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\NodeBuilder;
/**
* @implements ComponentProvider<SpanProcessorInterface>
*/
final class SpanProcessorSimple implements ComponentProvider
{
/**
* @param array{
* exporter: ComponentPlugin<SpanExporterInterface>,
* } $properties
*/
public function createPlugin(array $properties, Context $context): SpanProcessorInterface
{
return new SimpleSpanProcessor(
exporter: $properties['exporter']->create($context),
);
}
public function getConfig(ComponentProviderRegistry $registry, NodeBuilder $builder): ArrayNodeDefinition
{
$node = $builder->arrayNode('simple');
$node
->children()
->append($registry->component('exporter', SpanExporterInterface::class)->isRequired())
->end()
;
return $node;
}
}