1 Star 0 Fork 33

maosiping / third_party_nghttp2_1

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mkstatichdtbl.py 909 Bytes
一键复制 编辑 原始数据 按行查看 历史
Tatsuhiro Tsujikawa 提交于 2020-12-29 17:31 . Update document reference
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# This scripts reads static table entries [1] and generates
# nghttp2_hd_static_entry table. This table is used in
# lib/nghttp2_hd.c.
#
# [1] https://httpwg.org/specs/rfc7541.html
import re, sys
def hd_map_hash(name):
h = 2166136261
# FNV hash variant: http://isthe.com/chongo/tech/comp/fnv/
for c in name:
h ^= ord(c)
h *= 16777619
h &= 0xffffffff
return h
entries = []
for line in sys.stdin:
m = re.match(r'(\d+)\s+(\S+)\s+(\S.*)?', line)
val = m.group(3).strip() if m.group(3) else ''
entries.append((int(m.group(1)), m.group(2), val))
print('static nghttp2_hd_entry static_table[] = {')
idx = 0
for i, ent in enumerate(entries):
if entries[idx][1] != ent[1]:
idx = i
print('MAKE_STATIC_ENT("{}", "{}", {}, {}u),'\
.format(ent[1], ent[2], entries[idx][0] - 1, hd_map_hash(ent[1])))
print('};')
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/maosiping/third_party_nghttp2_1.git
git@gitee.com:maosiping/third_party_nghttp2_1.git
maosiping
third_party_nghttp2_1
third_party_nghttp2_1
master

搜索帮助