encodeHeader() — netty Function Reference
Architecture documentation for the encodeHeader() function in HpackEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD d416f498_d09b_3bf6_6f3c_bec7a647a54f["encodeHeader()"] 616b4418_6852_a9a9_188d_063a8768b35a["HpackEncoder"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|defined in| 616b4418_6852_a9a9_188d_063a8768b35a a8618c2b_623b_24d4_8ec8_e02e3e01f3c3["encodeHeadersIgnoreMaxHeaderListSize()"] a8618c2b_623b_24d4_8ec8_e02e3e01f3c3 -->|calls| d416f498_d09b_3bf6_6f3c_bec7a647a54f 23d2ecc9_6b84_3d50_ef57_2c1b263e4ea5["getNameIndex()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| 23d2ecc9_6b84_3d50_ef57_2c1b263e4ea5 23158887_3faf_9358_cf8e_ccef0456523f["encodeLiteral()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| 23158887_3faf_9358_cf8e_ccef0456523f 44510029_46b0_da69_c8a0_3e118364cdd2["getIndex()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| 44510029_46b0_da69_c8a0_3e118364cdd2 ff646124_1e6a_47c4_ccf7_8d4b7525d870["encodeInteger()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| ff646124_1e6a_47c4_ccf7_8d4b7525d870 e6edf78d_f910_aefc_3cb9_5645291b96a9["getIndexPlusOffset()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| e6edf78d_f910_aefc_3cb9_5645291b96a9 462841fd_e2cb_45fe_e761_3d897f7c2b9f["ensureCapacity()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| 462841fd_e2cb_45fe_e761_3d897f7c2b9f 67aada40_9838_0523_a316_eceb773154ab["encodeAndAddEntries()"] d416f498_d09b_3bf6_6f3c_bec7a647a54f -->|calls| 67aada40_9838_0523_a316_eceb773154ab style d416f498_d09b_3bf6_6f3c_bec7a647a54f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/HpackEncoder.java lines 161–205
private void encodeHeader(ByteBuf out, CharSequence name, CharSequence value, boolean sensitive, long headerSize) {
// If the header value is sensitive then it must never be indexed
if (sensitive) {
int nameIndex = getNameIndex(name);
encodeLiteral(out, name, value, IndexType.NEVER, nameIndex);
return;
}
// If the peer will only use the static table
if (maxHeaderTableSize == 0) {
int staticTableIndex = HpackStaticTable.getIndexInsensitive(name, value);
if (staticTableIndex == HpackStaticTable.NOT_FOUND) {
int nameIndex = HpackStaticTable.getIndex(name);
encodeLiteral(out, name, value, IndexType.NONE, nameIndex);
} else {
encodeInteger(out, 0x80, 7, staticTableIndex);
}
return;
}
// If the headerSize is greater than the max table size then it must be encoded literally
if (headerSize > maxHeaderTableSize) {
int nameIndex = getNameIndex(name);
encodeLiteral(out, name, value, IndexType.NONE, nameIndex);
return;
}
int nameHash = AsciiString.hashCode(name);
int valueHash = AsciiString.hashCode(value);
NameValueEntry headerField = getEntryInsensitive(name, nameHash, value, valueHash);
if (headerField != null) {
// Section 6.1. Indexed Header Field Representation
encodeInteger(out, 0x80, 7, getIndexPlusOffset(headerField.counter));
} else {
int staticTableIndex = HpackStaticTable.getIndexInsensitive(name, value);
if (staticTableIndex != HpackStaticTable.NOT_FOUND) {
// Section 6.1. Indexed Header Field Representation
encodeInteger(out, 0x80, 7, staticTableIndex);
} else {
ensureCapacity(headerSize);
encodeAndAddEntries(out, name, nameHash, value, valueHash);
size += headerSize;
}
}
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does encodeHeader() do?
encodeHeader() is a function in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/HpackEncoder.java.
Where is encodeHeader() defined?
encodeHeader() is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/HpackEncoder.java at line 161.
What does encodeHeader() call?
encodeHeader() calls 7 function(s): encodeAndAddEntries, encodeInteger, encodeLiteral, ensureCapacity, getIndex, getIndexPlusOffset, getNameIndex.
What calls encodeHeader()?
encodeHeader() is called by 1 function(s): encodeHeadersIgnoreMaxHeaderListSize.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free