diff options
author | Andrew Dolgov <[email protected]> | 2023-10-20 17:12:29 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2023-10-20 21:13:39 +0300 |
commit | cdd7ad020e165fe680703b6d3319b908b682fb7a (patch) | |
tree | b51eb09b7b4587e8fbc5624ac8d88d28cfcd0b04 /vendor/open-telemetry/sdk/Trace/Tracer.php | |
parent | 45a9ff0c88cbd33892ff16ab837e9059937d656e (diff) |
jaeger-client -> opentelemetry
Diffstat (limited to 'vendor/open-telemetry/sdk/Trace/Tracer.php')
-rw-r--r-- | vendor/open-telemetry/sdk/Trace/Tracer.php | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/vendor/open-telemetry/sdk/Trace/Tracer.php b/vendor/open-telemetry/sdk/Trace/Tracer.php new file mode 100644 index 000000000..913773f60 --- /dev/null +++ b/vendor/open-telemetry/sdk/Trace/Tracer.php @@ -0,0 +1,52 @@ +<?php + +declare(strict_types=1); + +namespace OpenTelemetry\SDK\Trace; + +use function ctype_space; +use OpenTelemetry\API\Trace as API; +use OpenTelemetry\Context\Context; +use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeInterface; + +class Tracer implements API\TracerInterface +{ + public const FALLBACK_SPAN_NAME = 'empty'; + + /** @readonly */ + private TracerSharedState $tracerSharedState; + + /** @readonly */ + private InstrumentationScopeInterface $instrumentationScope; + + public function __construct( + TracerSharedState $tracerSharedState, + InstrumentationScopeInterface $instrumentationScope + ) { + $this->tracerSharedState = $tracerSharedState; + $this->instrumentationScope = $instrumentationScope; + } + + /** @inheritDoc */ + public function spanBuilder(string $spanName): API\SpanBuilderInterface + { + if (ctype_space($spanName)) { + $spanName = self::FALLBACK_SPAN_NAME; + } + + if ($this->tracerSharedState->hasShutdown()) { + return new API\NoopSpanBuilder(Context::storage()); + } + + return new SpanBuilder( + $spanName, + $this->instrumentationScope, + $this->tracerSharedState, + ); + } + + public function getInstrumentationScope(): InstrumentationScopeInterface + { + return $this->instrumentationScope; + } +} |