Home / Function/ encodeHeader() — netty Function Reference

encodeHeader() — netty Function Reference

Architecture documentation for the encodeHeader() function in HpackEncoder.java from the netty codebase.

Function java Buffer Allocators calls 7 called by 1

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

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