1414use OpenTelemetry \API \Metrics \MeterProviderInterface ;
1515use OpenTelemetry \API \Trace \TracerProviderInterface ;
1616use OpenTelemetry \Context \Context ;
17+ use OpenTelemetry \Context \Propagation \ResponsePropagatorInterface ;
1718use OpenTelemetry \Context \Propagation \TextMapPropagatorInterface ;
1819use function sprintf ;
1920use Throwable ;
@@ -35,6 +36,7 @@ public function __construct(
3536 private readonly LoggerProviderInterface $ loggerProvider ,
3637 private readonly EventLoggerProviderInterface $ eventLoggerProvider ,
3738 private readonly TextMapPropagatorInterface $ propagator ,
39+ private readonly ResponsePropagatorInterface $ responsePropagator ,
3840 ) {
3941 }
4042
@@ -53,6 +55,14 @@ public static function propagator(): TextMapPropagatorInterface
5355 return Context::getCurrent ()->get (ContextKeys::propagator ()) ?? self ::globals ()->propagator ;
5456 }
5557
58+ /**
59+ * @experimental
60+ */
61+ public static function responsePropagator (): ResponsePropagatorInterface
62+ {
63+ return Context::getCurrent ()->get (ContextKeys::responsePropagator ()) ?? self ::globals ()->responsePropagator ;
64+ }
65+
5666 public static function loggerProvider (): LoggerProviderInterface
5767 {
5868 return Context::getCurrent ()->get (ContextKeys::loggerProvider ()) ?? self ::globals ()->loggerProvider ;
@@ -107,12 +117,13 @@ private static function globals(): self
107117 $ tracerProvider = $ context ->get (ContextKeys::tracerProvider ());
108118 $ meterProvider = $ context ->get (ContextKeys::meterProvider ());
109119 $ propagator = $ context ->get (ContextKeys::propagator ());
120+ $ responsePropagator = $ context ->get (ContextKeys::responsePropagator ());
110121 $ loggerProvider = $ context ->get (ContextKeys::loggerProvider ());
111122 $ eventLoggerProvider = $ context ->get (ContextKeys::eventLoggerProvider ());
112123
113- assert (isset ($ tracerProvider , $ meterProvider , $ loggerProvider , $ eventLoggerProvider , $ propagator ));
124+ assert (isset ($ tracerProvider , $ meterProvider , $ loggerProvider , $ eventLoggerProvider , $ propagator, $ responsePropagator ));
114125
115- return self ::$ globals = new self ($ tracerProvider , $ meterProvider , $ loggerProvider , $ eventLoggerProvider , $ propagator );
126+ return self ::$ globals = new self ($ tracerProvider , $ meterProvider , $ loggerProvider , $ eventLoggerProvider , $ propagator, $ responsePropagator );
116127 }
117128
118129 /**
0 commit comments