Expand description
HPACK/QPACK Huffman 编解码器 (RFC 7541 Appendix B)
全 workspace 唯一实现(zenith-http2 / zenith-http3 统一复用,禁止重复造轮子)。 提供完整的 Huffman 编码与解码能力:
- 编码:将字面值字节流编码为 Huffman 压缩位流
- 解码:将 Huffman 压缩位流还原为原始字节
§安全保证
- 解码器对 EOS (symbol 256) 严格拒绝(RFC 7541 §5.2)
- 解码器对超长填充(>7 位尾随 1)拒绝
- 所有位操作使用 checked 算术,溢出 fail-closed
- 最大输出长度限制,防止解压炸弹
§性能优化
- 编码器:u64 位累加器 + 批量字节刷新
- 解码器:8-bit 前缀解码表 O(1) 快速路径覆盖 ≤8 位码(占 HTTP 头部字符 95%+), 仅 >8 位码回退到分组二分查找
- 回退解码器:预计算码长分组查找表(OnceLock 初始化一次),每码长内二分查找
- 位读取:u64 批量读取 + 移位掩码,避免逐位循环
Structs§
- Huffman
Decoder - Huffman 解码器:将 Huffman 压缩字节还原为原始字节
- Huffman
Encoder - Huffman 编码器:将字节流编码为 Huffman 压缩位流
Enums§
- Huffman
Decode Error - Huffman 解码错误
Constants§
- HUFFMAN_
TABLE - Huffman 编码表:
HUFFMAN_TABLE[symbol] = (code, length)