DataFrameHeader Class — netty Architecture
Architecture documentation for the DataFrameHeader class in Http2FrameWriterDataBenchmark.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 04abad0f_8793_fb74_8fcd_e6ba7ef5d1b8["DataFrameHeader"] e1e4d882_21be_606e_52ad_16ef439ff80f["Http2FrameWriterDataBenchmark.java"] 04abad0f_8793_fb74_8fcd_e6ba7ef5d1b8 -->|defined in| e1e4d882_21be_606e_52ad_16ef439ff80f 1c7370c4_c604_5d40_5979_39169e4dbcf6["DataFrameHeader()"] 04abad0f_8793_fb74_8fcd_e6ba7ef5d1b8 -->|method| 1c7370c4_c604_5d40_5979_39169e4dbcf6 f58afd80_2dcc_b205_a069_6d6dd9a94949["ByteBuf()"] 04abad0f_8793_fb74_8fcd_e6ba7ef5d1b8 -->|method| f58afd80_2dcc_b205_a069_6d6dd9a94949 b4a421ea_c751_7b9f_d674_8b2936b52696["release()"] 04abad0f_8793_fb74_8fcd_e6ba7ef5d1b8 -->|method| b4a421ea_c751_7b9f_d674_8b2936b52696
Relationship Graph
Source Code
microbench/src/main/java/io/netty/handler/codec/http2/Http2FrameWriterDataBenchmark.java lines 197–240
private static final class DataFrameHeader {
private final int streamId;
private final ByteBuf buffer;
private final Http2Flags flags = new Http2Flags();
private int prevData;
private int prevPadding;
private ByteBuf frameHeader;
DataFrameHeader(ChannelHandlerContext ctx, int streamId) {
// All padding will be put at the end, so in the worst case we need 3 headers:
// a repeated no-padding frame of maxFrameSize, a frame that has part data and part
// padding, and a frame that has the remainder of the padding.
buffer = ctx.alloc().buffer(3 * DATA_FRAME_HEADER_LENGTH);
this.streamId = streamId;
}
/**
* Gets the frame header buffer configured for the current frame.
*/
ByteBuf slice(int data, int padding, boolean endOfStream) {
// Since we're reusing the current frame header whenever possible, check if anything changed
// that requires a new header.
if (data != prevData || padding != prevPadding
|| endOfStream != flags.endOfStream() || frameHeader == null) {
// Update the header state.
prevData = data;
prevPadding = padding;
flags.paddingPresent(padding > 0);
flags.endOfStream(endOfStream);
frameHeader = buffer.slice(buffer.readerIndex(), DATA_FRAME_HEADER_LENGTH).writerIndex(0);
buffer.setIndex(buffer.readerIndex() + DATA_FRAME_HEADER_LENGTH,
buffer.writerIndex() + DATA_FRAME_HEADER_LENGTH);
int payloadLength = data + padding;
writeFrameHeaderInternal(frameHeader, payloadLength, DATA, flags, streamId);
writePaddingLength(frameHeader, padding);
}
return frameHeader.slice();
}
void release() {
buffer.release();
}
}
Source
Frequently Asked Questions
What is the DataFrameHeader class?
DataFrameHeader is a class in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http2/Http2FrameWriterDataBenchmark.java.
Where is DataFrameHeader defined?
DataFrameHeader is defined in microbench/src/main/java/io/netty/handler/codec/http2/Http2FrameWriterDataBenchmark.java at line 197.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free