Passed
Pull Request — master (#8)
by
unknown
03:37 queued 48s
created

SpanCreator::detectSpanOptions()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 18
rs 9.9332
c 1
b 0
f 0
eloc 10
cc 3
nc 2
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Umbrellio\Jaravel\Services\Span;
6
7
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
8
use OpenTelemetry\API\Trace\SpanInterface;
9
use OpenTelemetry\API\Trace\SpanKind;
10
use OpenTelemetry\API\Trace\TracerInterface;
11
12
class SpanCreator
13
{
14
    private TracerInterface $tracer;
15
    private TraceContextPropagator $contextPropagator;
16
17
    public function __construct(TracerInterface $tracer, TraceContextPropagator $contextPropagator)
18
    {
19
        $this->tracer = $tracer;
20
        $this->contextPropagator = $contextPropagator;
21
    }
22
23
    public function create(string $operationName, ?string $traceIdHeader = null): SpanInterface
24
    {
25
        $spanBuilder = $this->tracer->spanBuilder($operationName);
26
27
        if ($traceIdHeader) {
28
            $context = $this->contextPropagator->extract([TraceContextPropagator::TRACEPARENT => $traceIdHeader]);
29
            $spanBuilder->setParent($context);
30
        }
31
32
        return $spanBuilder->startSpan();
33
    }
34
}
35