function TraceContextPropagator::inject
Overrides TextMapPropagatorInterface::inject
File
-
vendor/
open-telemetry/ api/ Trace/ Propagation/ TraceContextPropagator.php, line 62
Class
- TraceContextPropagator
- TraceContext is a propagator that supports the W3C Trace Context format (https://www.w3.org/TR/trace-context/)
Namespace
OpenTelemetry\API\Trace\PropagationCode
public function inject(&$carrier, ?PropagationSetterInterface $setter = null, ?ContextInterface $context = null) : void {
$setter ??= ArrayAccessGetterSetter::getInstance();
$context ??= Context::getCurrent();
$spanContext = Span::fromContext($context)->getContext();
if (!$spanContext->isValid()) {
return;
}
// Build and inject the traceparent header
$traceparent = self::VERSION . '-' . $spanContext->getTraceId() . '-' . $spanContext->getSpanId() . '-' . ($spanContext->isSampled() ? '01' : '00');
$setter->set($carrier, self::TRACEPARENT, $traceparent);
// Build and inject the tracestate header
// Spec says to avoid sending empty tracestate headers
if (($tracestate = (string) $spanContext->getTraceState()) !== '') {
$setter->set($carrier, self::TRACESTATE, $tracestate);
}
}