QpackHuffmanDecoder Class — netty Architecture
Architecture documentation for the QpackHuffmanDecoder class in QpackHuffmanDecoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD fdc838f2_6462_b845_23d3_793f69152983["QpackHuffmanDecoder"] ffd2127a_e6fb_1bba_6d31_59b029020764["QpackHuffmanDecoder.java"] fdc838f2_6462_b845_23d3_793f69152983 -->|defined in| ffd2127a_e6fb_1bba_6d31_59b029020764 4a7a7e35_98f7_bf19_68d7_b830d1043b81["QpackHuffmanDecoder()"] fdc838f2_6462_b845_23d3_793f69152983 -->|method| 4a7a7e35_98f7_bf19_68d7_b830d1043b81 6ee92640_47c2_01cc_a561_746f4c81d79d["AsciiString()"] fdc838f2_6462_b845_23d3_793f69152983 -->|method| 6ee92640_47c2_01cc_a561_746f4c81d79d 8ad45b78_06a3_2730_92b9_80d420a604b2["process()"] fdc838f2_6462_b845_23d3_793f69152983 -->|method| 8ad45b78_06a3_2730_92b9_80d420a604b2 ee79763d_1ce1_c963_bc8e_86866ad73744["processNibble()"] fdc838f2_6462_b845_23d3_793f69152983 -->|method| ee79763d_1ce1_c963_bc8e_86866ad73744
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/QpackHuffmanDecoder.java lines 22–4717
final class QpackHuffmanDecoder 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 QpackHuffmanDecoder class?
QpackHuffmanDecoder is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/QpackHuffmanDecoder.java.
Where is QpackHuffmanDecoder defined?
QpackHuffmanDecoder is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/QpackHuffmanDecoder.java at line 22.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free