summaryrefslogtreecommitdiff
path: root/vendor/open-telemetry/sdk/Trace/Tracer.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/open-telemetry/sdk/Trace/Tracer.php')
-rw-r--r--vendor/open-telemetry/sdk/Trace/Tracer.php52
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;
+ }
+}