HpackHuffmanDecoder Class — netty Architecture
Architecture documentation for the HpackHuffmanDecoder class in HpackHuffmanDecoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 75ae760e_009e_dc0c_af13_9cd0fad0853b["HpackHuffmanDecoder"] 8d3d3201_5e1f_ff55_2d37_6e7ddf9465fb["HpackHuffmanDecoder.java"] 75ae760e_009e_dc0c_af13_9cd0fad0853b -->|defined in| 8d3d3201_5e1f_ff55_2d37_6e7ddf9465fb ac035546_80f3_9c85_4d24_15310a48c014["HpackHuffmanDecoder()"] 75ae760e_009e_dc0c_af13_9cd0fad0853b -->|method| ac035546_80f3_9c85_4d24_15310a48c014 4640aa1f_f858_555f_6193_01f4a9427401["AsciiString()"] 75ae760e_009e_dc0c_af13_9cd0fad0853b -->|method| 4640aa1f_f858_555f_6193_01f4a9427401 7ab112f9_1f08_f8d9_4b84_1251288c391a["process()"] 75ae760e_009e_dc0c_af13_9cd0fad0853b -->|method| 7ab112f9_1f08_f8d9_4b84_1251288c391a 90e35007_ca12_f1f0_c231_aed4a6e3fc8b["processNibble()"] 75ae760e_009e_dc0c_af13_9cd0fad0853b -->|method| 90e35007_ca12_f1f0_c231_aed4a6e3fc8b
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/HpackHuffmanDecoder.java lines 40–4736
final class HpackHuffmanDecoder implements ByteProcessor {
/* Scroll to the bottom! */
private static final byte HUFFMAN_COMPLETE = 1;
private static final byte HUFFMAN_EMIT_SYMBOL = 1 << 1;
private static final byte HUFFMAN_FAIL = 1 << 2;
private static final int HUFFMAN_COMPLETE_SHIFT = HUFFMAN_COMPLETE << 8;
private static final int HUFFMAN_EMIT_SYMBOL_SHIFT = HUFFMAN_EMIT_SYMBOL << 8;
private static final int HUFFMAN_FAIL_SHIFT = HUFFMAN_FAIL << 8;
/**
* A table of byte tuples (state, flags, output). They are packed together as:
* <p>
* state<<16 + flags<<8 + output
*/
private static final int[] HUFFS = new int[] {
// Node 0 (Root Node, never emits symbols.)
4 << 16,
5 << 16,
7 << 16,
8 << 16,
11 << 16,
12 << 16,
16 << 16,
19 << 16,
25 << 16,
28 << 16,
32 << 16,
35 << 16,
42 << 16,
49 << 16,
57 << 16,
(64 << 16) + (HUFFMAN_COMPLETE << 8),
// Node 1
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 48,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 49,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 50,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 97,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 99,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 101,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 105,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 111,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 115,
((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 116,
13 << 16,
14 << 16,
17 << 16,
18 << 16,
20 << 16,
21 << 16,
// Node 2
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 48,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 48,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 49,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 49,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 50,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 50,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 97,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 97,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 99,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 99,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 101,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 101,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 105,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 105,
(1 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 111,
(22 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 111,
// Node 3
(2 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 48,
(9 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 48,
(23 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 48,
(40 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 48,
(2 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 49,
(9 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 49,
(23 << 16) + (HUFFMAN_EMIT_SYMBOL << 8) + 49,
(40 << 16) + ((HUFFMAN_COMPLETE | HUFFMAN_EMIT_SYMBOL) << 8) + 49,
Source
Frequently Asked Questions
What is the HpackHuffmanDecoder class?
HpackHuffmanDecoder is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/HpackHuffmanDecoder.java.
Where is HpackHuffmanDecoder defined?
HpackHuffmanDecoder is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/HpackHuffmanDecoder.java at line 40.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free