xref: /aosp_15_r20/external/pigweed/pw_grpc/hpack.autogen.inc (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker// Copyright 2024 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker//
3*61c4878aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker// use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker// the License at
6*61c4878aSAndroid Build Coastguard Worker//
7*61c4878aSAndroid Build Coastguard Worker//     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker//
9*61c4878aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker// License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker// the License.
14*61c4878aSAndroid Build Coastguard Worker//
15*61c4878aSAndroid Build Coastguard Worker// AUTOGENERATED FILE, DO NOT EDIT
16*61c4878aSAndroid Build Coastguard Worker//
17*61c4878aSAndroid Build Coastguard Worker// To regenerate, run `go run gen/hpack_gen.go > hpack.autogen.inc`.
18*61c4878aSAndroid Build Coastguard Worker// This file should be included in exactly one *.cc file.
19*61c4878aSAndroid Build Coastguard Worker//
20*61c4878aSAndroid Build Coastguard Worker
21*61c4878aSAndroid Build Coastguard Worker// clang-format off
22*61c4878aSAndroid Build Coastguard Worker
23*61c4878aSAndroid Build Coastguard Worker// Huffman decoder table. Decoding starts at index=0. For each bit, we inspect
24*61c4878aSAndroid Build Coastguard Worker// kHuffmanDecoderTable[index][bit] and take an action based on that value:
25*61c4878aSAndroid Build Coastguard Worker//
26*61c4878aSAndroid Build Coastguard Worker//   * If the value matches 0b0..._...., set index=value
27*61c4878aSAndroid Build Coastguard Worker//   * If the value matches 0b1xxx_xxxx, output byte 32 + xx_xxxx, set index=0
28*61c4878aSAndroid Build Coastguard Worker//   * If the value matches 0b1111_1110, fail: unprintable character
29*61c4878aSAndroid Build Coastguard Worker//   * If the value matches 0b1111_1111, fail: decoder entered an invalid state
30*61c4878aSAndroid Build Coastguard Worker//
31*61c4878aSAndroid Build Coastguard Workerstatic constexpr std::array<uint8_t[2], 114> kHuffmanDecoderTable = {{
32*61c4878aSAndroid Build Coastguard Worker  /*0=*/ {1, 22},
33*61c4878aSAndroid Build Coastguard Worker  /*1=*/ {2, 9},
34*61c4878aSAndroid Build Coastguard Worker  /*2=*/ {3, 6},
35*61c4878aSAndroid Build Coastguard Worker  /*3=*/ {4, 5},
36*61c4878aSAndroid Build Coastguard Worker  /*4=*/ {144, 145},
37*61c4878aSAndroid Build Coastguard Worker  /*5=*/ {146, 193},
38*61c4878aSAndroid Build Coastguard Worker  /*6=*/ {7, 8},
39*61c4878aSAndroid Build Coastguard Worker  /*7=*/ {195, 197},
40*61c4878aSAndroid Build Coastguard Worker  /*8=*/ {201, 207},
41*61c4878aSAndroid Build Coastguard Worker  /*9=*/ {10, 15},
42*61c4878aSAndroid Build Coastguard Worker  /*10=*/ {11, 12},
43*61c4878aSAndroid Build Coastguard Worker  /*11=*/ {211, 212},
44*61c4878aSAndroid Build Coastguard Worker  /*12=*/ {13, 14},
45*61c4878aSAndroid Build Coastguard Worker  /*13=*/ {128, 133},
46*61c4878aSAndroid Build Coastguard Worker  /*14=*/ {141, 142},
47*61c4878aSAndroid Build Coastguard Worker  /*15=*/ {16, 19},
48*61c4878aSAndroid Build Coastguard Worker  /*16=*/ {17, 18},
49*61c4878aSAndroid Build Coastguard Worker  /*17=*/ {143, 147},
50*61c4878aSAndroid Build Coastguard Worker  /*18=*/ {148, 149},
51*61c4878aSAndroid Build Coastguard Worker  /*19=*/ {20, 21},
52*61c4878aSAndroid Build Coastguard Worker  /*20=*/ {150, 151},
53*61c4878aSAndroid Build Coastguard Worker  /*21=*/ {152, 153},
54*61c4878aSAndroid Build Coastguard Worker  /*22=*/ {23, 40},
55*61c4878aSAndroid Build Coastguard Worker  /*23=*/ {24, 31},
56*61c4878aSAndroid Build Coastguard Worker  /*24=*/ {25, 28},
57*61c4878aSAndroid Build Coastguard Worker  /*25=*/ {26, 27},
58*61c4878aSAndroid Build Coastguard Worker  /*26=*/ {157, 161},
59*61c4878aSAndroid Build Coastguard Worker  /*27=*/ {191, 194},
60*61c4878aSAndroid Build Coastguard Worker  /*28=*/ {29, 30},
61*61c4878aSAndroid Build Coastguard Worker  /*29=*/ {196, 198},
62*61c4878aSAndroid Build Coastguard Worker  /*30=*/ {199, 200},
63*61c4878aSAndroid Build Coastguard Worker  /*31=*/ {32, 35},
64*61c4878aSAndroid Build Coastguard Worker  /*32=*/ {33, 34},
65*61c4878aSAndroid Build Coastguard Worker  /*33=*/ {204, 205},
66*61c4878aSAndroid Build Coastguard Worker  /*34=*/ {206, 208},
67*61c4878aSAndroid Build Coastguard Worker  /*35=*/ {36, 37},
68*61c4878aSAndroid Build Coastguard Worker  /*36=*/ {210, 213},
69*61c4878aSAndroid Build Coastguard Worker  /*37=*/ {38, 39},
70*61c4878aSAndroid Build Coastguard Worker  /*38=*/ {154, 162},
71*61c4878aSAndroid Build Coastguard Worker  /*39=*/ {163, 164},
72*61c4878aSAndroid Build Coastguard Worker  /*40=*/ {41, 56},
73*61c4878aSAndroid Build Coastguard Worker  /*41=*/ {42, 49},
74*61c4878aSAndroid Build Coastguard Worker  /*42=*/ {43, 46},
75*61c4878aSAndroid Build Coastguard Worker  /*43=*/ {44, 45},
76*61c4878aSAndroid Build Coastguard Worker  /*44=*/ {165, 166},
77*61c4878aSAndroid Build Coastguard Worker  /*45=*/ {167, 168},
78*61c4878aSAndroid Build Coastguard Worker  /*46=*/ {47, 48},
79*61c4878aSAndroid Build Coastguard Worker  /*47=*/ {169, 170},
80*61c4878aSAndroid Build Coastguard Worker  /*48=*/ {171, 172},
81*61c4878aSAndroid Build Coastguard Worker  /*49=*/ {50, 53},
82*61c4878aSAndroid Build Coastguard Worker  /*50=*/ {51, 52},
83*61c4878aSAndroid Build Coastguard Worker  /*51=*/ {173, 174},
84*61c4878aSAndroid Build Coastguard Worker  /*52=*/ {175, 176},
85*61c4878aSAndroid Build Coastguard Worker  /*53=*/ {54, 55},
86*61c4878aSAndroid Build Coastguard Worker  /*54=*/ {177, 178},
87*61c4878aSAndroid Build Coastguard Worker  /*55=*/ {179, 180},
88*61c4878aSAndroid Build Coastguard Worker  /*56=*/ {57, 64},
89*61c4878aSAndroid Build Coastguard Worker  /*57=*/ {58, 61},
90*61c4878aSAndroid Build Coastguard Worker  /*58=*/ {59, 60},
91*61c4878aSAndroid Build Coastguard Worker  /*59=*/ {181, 182},
92*61c4878aSAndroid Build Coastguard Worker  /*60=*/ {183, 185},
93*61c4878aSAndroid Build Coastguard Worker  /*61=*/ {62, 63},
94*61c4878aSAndroid Build Coastguard Worker  /*62=*/ {202, 203},
95*61c4878aSAndroid Build Coastguard Worker  /*63=*/ {209, 214},
96*61c4878aSAndroid Build Coastguard Worker  /*64=*/ {65, 68},
97*61c4878aSAndroid Build Coastguard Worker  /*65=*/ {66, 67},
98*61c4878aSAndroid Build Coastguard Worker  /*66=*/ {215, 216},
99*61c4878aSAndroid Build Coastguard Worker  /*67=*/ {217, 218},
100*61c4878aSAndroid Build Coastguard Worker  /*68=*/ {69, 72},
101*61c4878aSAndroid Build Coastguard Worker  /*69=*/ {70, 71},
102*61c4878aSAndroid Build Coastguard Worker  /*70=*/ {134, 138},
103*61c4878aSAndroid Build Coastguard Worker  /*71=*/ {140, 155},
104*61c4878aSAndroid Build Coastguard Worker  /*72=*/ {73, 74},
105*61c4878aSAndroid Build Coastguard Worker  /*73=*/ {184, 186},
106*61c4878aSAndroid Build Coastguard Worker  /*74=*/ {75, 78},
107*61c4878aSAndroid Build Coastguard Worker  /*75=*/ {76, 77},
108*61c4878aSAndroid Build Coastguard Worker  /*76=*/ {129, 130},
109*61c4878aSAndroid Build Coastguard Worker  /*77=*/ {136, 137},
110*61c4878aSAndroid Build Coastguard Worker  /*78=*/ {79, 81},
111*61c4878aSAndroid Build Coastguard Worker  /*79=*/ {159, 80},
112*61c4878aSAndroid Build Coastguard Worker  /*80=*/ {135, 139},
113*61c4878aSAndroid Build Coastguard Worker  /*81=*/ {82, 84},
114*61c4878aSAndroid Build Coastguard Worker  /*82=*/ {220, 83},
115*61c4878aSAndroid Build Coastguard Worker  /*83=*/ {131, 158},
116*61c4878aSAndroid Build Coastguard Worker  /*84=*/ {85, 88},
117*61c4878aSAndroid Build Coastguard Worker  /*85=*/ {86, 87},
118*61c4878aSAndroid Build Coastguard Worker  /*86=*/ {254, 132},
119*61c4878aSAndroid Build Coastguard Worker  /*87=*/ {160, 187},
120*61c4878aSAndroid Build Coastguard Worker  /*88=*/ {89, 90},
121*61c4878aSAndroid Build Coastguard Worker  /*89=*/ {189, 222},
122*61c4878aSAndroid Build Coastguard Worker  /*90=*/ {91, 92},
123*61c4878aSAndroid Build Coastguard Worker  /*91=*/ {190, 221},
124*61c4878aSAndroid Build Coastguard Worker  /*92=*/ {93, 94},
125*61c4878aSAndroid Build Coastguard Worker  /*93=*/ {156, 192},
126*61c4878aSAndroid Build Coastguard Worker  /*94=*/ {219, 95},
127*61c4878aSAndroid Build Coastguard Worker  /*95=*/ {96, 99},
128*61c4878aSAndroid Build Coastguard Worker  /*96=*/ {97, 254},
129*61c4878aSAndroid Build Coastguard Worker  /*97=*/ {98, 254},
130*61c4878aSAndroid Build Coastguard Worker  /*98=*/ {188, 254},
131*61c4878aSAndroid Build Coastguard Worker  /*99=*/ {254, 100},
132*61c4878aSAndroid Build Coastguard Worker  /*100=*/ {254, 101},
133*61c4878aSAndroid Build Coastguard Worker  /*101=*/ {254, 102},
134*61c4878aSAndroid Build Coastguard Worker  /*102=*/ {254, 103},
135*61c4878aSAndroid Build Coastguard Worker  /*103=*/ {254, 104},
136*61c4878aSAndroid Build Coastguard Worker  /*104=*/ {254, 105},
137*61c4878aSAndroid Build Coastguard Worker  /*105=*/ {254, 106},
138*61c4878aSAndroid Build Coastguard Worker  /*106=*/ {254, 107},
139*61c4878aSAndroid Build Coastguard Worker  /*107=*/ {254, 108},
140*61c4878aSAndroid Build Coastguard Worker  /*108=*/ {254, 109},
141*61c4878aSAndroid Build Coastguard Worker  /*109=*/ {110, 111},
142*61c4878aSAndroid Build Coastguard Worker  /*110=*/ {223, 254},
143*61c4878aSAndroid Build Coastguard Worker  /*111=*/ {254, 112},
144*61c4878aSAndroid Build Coastguard Worker  /*112=*/ {254, 113},
145*61c4878aSAndroid Build Coastguard Worker  /*113=*/ {254, 255},
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Worker}};
148*61c4878aSAndroid Build Coastguard Worker
149*61c4878aSAndroid Build Coastguard Worker// Decoder table stats:
150*61c4878aSAndroid Build Coastguard Worker//   before optimization = {numBranchNodes:256 numOutputNodes:96 numUnprintableNodes:160 numInvalidNodes:1}
151*61c4878aSAndroid Build Coastguard Worker//   after  optimization = {numBranchNodes:114 numOutputNodes:96 numUnprintableNodes:18 numInvalidNodes:1}
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Worker
154*61c4878aSAndroid Build Coastguard Worker// HPACK-encoded header fields which form grpc Response-Headers.
155*61c4878aSAndroid Build Coastguard Worker// These are the same for every response.
156*61c4878aSAndroid Build Coastguard Workerstatic constexpr std::array<uint8_t, 19> kResponseHeaderFields = {
157*61c4878aSAndroid Build Coastguard Worker  0x88, 0x5f, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63
158*61c4878aSAndroid Build Coastguard Worker};
159*61c4878aSAndroid Build Coastguard Worker
160*61c4878aSAndroid Build Coastguard Worker// HPACK-encoded header fields which form grpc Trailers. All response Trailers
161*61c4878aSAndroid Build Coastguard Worker// are identical except for the status code.
162*61c4878aSAndroid Build Coastguard Worker//
163*61c4878aSAndroid Build Coastguard Worker// This is indexed by pw::Status::Code, which happens to be identical to grpc's
164*61c4878aSAndroid Build Coastguard Worker// status code.
165*61c4878aSAndroid Build Coastguard Workerstruct ResponseTrailerPayload {
166*61c4878aSAndroid Build Coastguard Worker  uint32_t size;
167*61c4878aSAndroid Build Coastguard Worker  std::array<uint8_t, 16> bytes;
168*61c4878aSAndroid Build Coastguard Worker};
169*61c4878aSAndroid Build Coastguard Workerstatic constexpr std::array<ResponseTrailerPayload, 17> kResponseTrailerFields = {{
170*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x30}},
171*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x31}},
172*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x32}},
173*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x33}},
174*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x34}},
175*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x35}},
176*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x36}},
177*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x37}},
178*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x38}},
179*61c4878aSAndroid Build Coastguard Worker  {.size=15, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1, 0x39}},
180*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x30}},
181*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x31}},
182*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x32}},
183*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x33}},
184*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x34}},
185*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x35}},
186*61c4878aSAndroid Build Coastguard Worker  {.size=16, .bytes={0x40, 0xb, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2, 0x31, 0x36}},
187*61c4878aSAndroid Build Coastguard Worker
188*61c4878aSAndroid Build Coastguard Worker}};
189