mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-04-18 20:22:48 +02:00
Added the span context injection and extraction layer that bridges the OTel C wrapper's propagation API with HAProxy's HTTP headers and text map carriers. The new otelc.c module implements four public functions that wrap the OTel C wrapper's context propagation methods: flt_otel_inject_text_map() and flt_otel_inject_http_headers() serialize a span's context into a text map or HTTP headers carrier for outbound propagation, while flt_otel_extract_text_map() and flt_otel_extract_http_headers() deserialize an inbound carrier into an otelc_span_context for parent linking. Each direction uses a pair of callbacks registered on the carrier structure. The injection writers (flt_otel_text_map_writer_set_cb and flt_otel_http_headers_writer_set_cb) store key-value pairs emitted by the SDK into the carrier's text map via OTELC_TEXT_MAP_ADD(). The extraction readers (flt_otel_text_map_reader_foreach_key_cb and flt_otel_http_headers_reader_foreach_key_cb) iterate the carrier's text map entries and pass each pair to the SDK's handler callback. The scope context initialization in flt_otel_scope_context_init() now calls flt_otel_extract_http_headers() to extract the span context from the provided text map carrier and stores it in the scope context structure, making extracted contexts available for parent linking in subsequent span creation.