mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 15:37:49 +00:00
Rust spans will go to the same Jaeger agent as Python's, over UDP, as the `Agent.emitBatch` oneway message in the thrift compact protocol. This adds a write-only encoder for that message and the six structs in `jaeger.thrift`, with no new dependency. Spans are encoded one at a time so a reporter knows each span's size before it joins them into a batch, and `emit_batch_len` bounds a batch's size without building it. The output matches jaeger-client's own reporter byte for byte. The golden fixture is generated by `scripts-dev/generate_jaeger_thrift_fixture.py` with jaeger-client's generated thrift code and covers every tag type, logs, a follows-from reference, a 128-bit trace ID, IDs at or above 2^63 (which thrift sends negative) and long list headers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4zxygfJC93SsugxskhoJG