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)。 |