use crate::{PropagatorKind, TelemetryConfig};
use opentelemetry::propagation::TextMapCompositePropagator;
use opentelemetry_sdk::propagation::{BaggagePropagator, TraceContextPropagator};
pub(crate) fn init_propagator(config: &TelemetryConfig) {
let propagators: Vec<Box<dyn opentelemetry::propagation::TextMapPropagator + Send + Sync>> =
config
.propagators
.iter()
.map(|kind| -> Box<dyn opentelemetry::propagation::TextMapPropagator + Send + Sync> {
match kind {
PropagatorKind::TraceContext => Box::new(TraceContextPropagator::new()),
PropagatorKind::Baggage => Box::new(BaggagePropagator::new()),
}
})
.collect();
opentelemetry::global::set_text_map_propagator(TextMapCompositePropagator::new(propagators));
}