decode() — netty Function Reference
Architecture documentation for the decode() function in Http2StreamFrameToHttpObjectCodec.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f664b8a7_c178_2d04_e4cb_fdcf0adeceb5["decode()"] 28068ec0_f470_e63a_089d_e0d46f43718e["Http2StreamFrameToHttpObjectCodec"] f664b8a7_c178_2d04_e4cb_fdcf0adeceb5 -->|defined in| 28068ec0_f470_e63a_089d_e0d46f43718e d414c489_fe8f_157d_99ae_be0434ba0f1e["isInformationalResponseHeaderFrame()"] f664b8a7_c178_2d04_e4cb_fdcf0adeceb5 -->|calls| d414c489_fe8f_157d_99ae_be0434ba0f1e a35070c1_935f_7a21_de02_ebb8de0fcf81["isContentAlwaysEmpty()"] f664b8a7_c178_2d04_e4cb_fdcf0adeceb5 -->|calls| a35070c1_935f_7a21_de02_ebb8de0fcf81 style f664b8a7_c178_2d04_e4cb_fdcf0adeceb5 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/Http2StreamFrameToHttpObjectCodec.java lines 84–127
@Override
protected void decode(ChannelHandlerContext ctx, Http2StreamFrame frame, List<Object> out) throws Exception {
if (frame instanceof Http2HeadersFrame) {
Http2HeadersFrame headersFrame = (Http2HeadersFrame) frame;
Http2Headers headers = headersFrame.headers();
Http2FrameStream stream = headersFrame.stream();
int id = stream == null ? 0 : stream.id();
final CharSequence status = headers.status();
// 1xx response (excluding 101) is a special case where Http2HeadersFrame#isEndStream=false
// but we need to decode it as a FullHttpResponse to play nice with HttpObjectAggregator.
if (null != status && isInformationalResponseHeaderFrame(status)) {
final FullHttpMessage fullMsg = newFullMessage(id, headers, ctx.alloc());
out.add(fullMsg);
return;
}
if (headersFrame.isEndStream()) {
if (headers.method() == null && status == null) {
LastHttpContent last = new DefaultLastHttpContent(Unpooled.EMPTY_BUFFER, validateHeaders);
HttpConversionUtil.addHttp2ToHttpHeaders(id, headers, last.trailingHeaders(),
HttpVersion.HTTP_1_1, true, true);
out.add(last);
} else {
FullHttpMessage full = newFullMessage(id, headers, ctx.alloc());
out.add(full);
}
} else {
HttpMessage req = newMessage(id, headers);
if ((status == null || !isContentAlwaysEmpty(status)) && !HttpUtil.isContentLengthSet(req)) {
req.headers().add(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
}
out.add(req);
}
} else if (frame instanceof Http2DataFrame) {
Http2DataFrame dataFrame = (Http2DataFrame) frame;
if (dataFrame.isEndStream()) {
out.add(new DefaultLastHttpContent(dataFrame.content().retain(), validateHeaders));
} else {
out.add(new DefaultHttpContent(dataFrame.content().retain()));
}
}
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does decode() do?
decode() is a function in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2StreamFrameToHttpObjectCodec.java.
Where is decode() defined?
decode() is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2StreamFrameToHttpObjectCodec.java at line 84.
What does decode() call?
decode() calls 2 function(s): isContentAlwaysEmpty, isInformationalResponseHeaderFrame.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free