Skip to content

http.frm.trace

W3C TraceContext traceparent 提取/注入(P7-C)

形态纪律(router 同款零 use 纯模块):无 IO 无时钟;TrCtx 值 struct + 自由 函数;tid/sid 以 Str 携带(128 位数值形会半数回绕——trace-id 随机,顶端 nibble ≥ 8 即溢 I64 符号位;Str 相等比较须用长度感知 eqs,构造侧只产 小写 hex 无 NUL 截断风险,byte_at 逐字节序列化安全)。 格式(W3C Trace Context §3.2,严格 55 字符形): traceparent: 00-<32 lowercase hex>-<16 lowercase hex>-<2 hex> 严格口径:总长 55、分隔 '-'、hex 仅小写(大写拒,登记志向)、tid/sid 全零拒、 version ff 拒;非 00 版本号(00-fe)同长可解则收(ver 记原值,W3C 前向兼容)。 算术纪律(2026-09-25 在册):无位运算——nibble 经查表,flags = hi*16+lo。 头名匹配 v1 = 行首精确小写 "traceparent:"(W3C 惯例形;HTTP 大小写不敏感 宽容匹配列志向——本仓客户端恒规范形)。

pub struct

struct TrCtx

Field Type
rc I64
ver I64
tid Str
sid Str
fl I64

pub fn

Signature Returns Description
tp_rc_ok() I64 —
tp_rc_absent() I64 —
tp_rc_bad() I64 —
tp_parse_s(s: Str) TrCtx Str 解析(测试/客户端便利面;与 lane 形同口径)
tp_ser(buf: &[I64], cap: I64, pos: I64, t: TrCtx) I64 序列化 55 字节直填(返回新 pos;越界 -1)。tid/sid 须为合法 hex 串
(本模块产出的 TrCtx 恒满足;外部拼串的校验 = 逐字节 hex 查表失败即 -1)。
tp_ser_len() I64 序列化定长(55)
tp_from_req(buf: &[I64], n: I64) TrCtx 请求头提取:行首锚精确小写 "traceparent:"(12 字节)→ 值区经 tp_parse_l。
无头 = absent;有头坏值 = bad。n = 头区总长(含 CRLF)。