ChannelFuture() — netty Function Reference
Architecture documentation for the ChannelFuture() function in Http2FrameWriterDataBenchmark.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0791d501_8dec_ab00_6a1b_1a1805e56f9e["ChannelFuture()"] 4df6ecc7_4589_1651_bd44_4cd5d0011fd8["OldDefaultHttp2FrameWriter"] 0791d501_8dec_ab00_6a1b_1a1805e56f9e -->|defined in| 4df6ecc7_4589_1651_bd44_4cd5d0011fd8 1c7370c4_c604_5d40_5979_39169e4dbcf6["DataFrameHeader()"] 0791d501_8dec_ab00_6a1b_1a1805e56f9e -->|calls| 1c7370c4_c604_5d40_5979_39169e4dbcf6 bc380697_dac6_22ad_7f28_26620f02fe36["paddingBytes()"] 0791d501_8dec_ab00_6a1b_1a1805e56f9e -->|calls| bc380697_dac6_22ad_7f28_26620f02fe36 b4a421ea_c751_7b9f_d674_8b2936b52696["release()"] 0791d501_8dec_ab00_6a1b_1a1805e56f9e -->|calls| b4a421ea_c751_7b9f_d674_8b2936b52696 style 0791d501_8dec_ab00_6a1b_1a1805e56f9e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
microbench/src/main/java/io/netty/handler/codec/http2/Http2FrameWriterDataBenchmark.java lines 119–177
@Override
public ChannelFuture writeData(ChannelHandlerContext ctx, int streamId, ByteBuf data,
int padding, boolean endStream, ChannelPromise promise) {
final Http2CodecUtil.SimpleChannelPromiseAggregator promiseAggregator =
new Http2CodecUtil.SimpleChannelPromiseAggregator(promise, ctx.channel(), ctx.executor());
final DataFrameHeader header = new DataFrameHeader(ctx, streamId);
boolean needToReleaseHeaders = true;
boolean needToReleaseData = true;
try {
checkPositive(streamId, "streamId");
verifyPadding(padding);
boolean lastFrame;
int remainingData = data.readableBytes();
do {
// Determine how much data and padding to write in this frame. Put all padding at the end.
int frameDataBytes = min(remainingData, maxFrameSize);
int framePaddingBytes = min(padding, max(0, (maxFrameSize - 1) - frameDataBytes));
// Decrement the remaining counters.
padding -= framePaddingBytes;
remainingData -= frameDataBytes;
// Determine whether or not this is the last frame to be sent.
lastFrame = remainingData == 0 && padding == 0;
// Only the last frame is not retained. Until then, the outer finally must release.
ByteBuf frameHeader = header.slice(frameDataBytes, framePaddingBytes, lastFrame && endStream);
needToReleaseHeaders = !lastFrame;
ctx.write(lastFrame ? frameHeader : frameHeader.retain(), promiseAggregator.newPromise());
// Write the frame data.
ByteBuf frameData = data.readSlice(frameDataBytes);
// Only the last frame is not retained. Until then, the outer finally must release.
needToReleaseData = !lastFrame;
ctx.write(lastFrame ? frameData : frameData.retain(), promiseAggregator.newPromise());
// Write the frame padding.
if (paddingBytes(framePaddingBytes) > 0) {
ctx.write(ZERO_BUFFER.slice(0, paddingBytes(framePaddingBytes)),
promiseAggregator.newPromise());
}
} while (!lastFrame);
} catch (Throwable t) {
try {
if (needToReleaseHeaders) {
header.release();
}
if (needToReleaseData) {
data.release();
}
} finally {
promiseAggregator.setFailure(t);
promiseAggregator.doneAllocatingPromises();
}
return promiseAggregator;
}
return promiseAggregator.doneAllocatingPromises();
}
Domain
Subdomains
Source
Frequently Asked Questions
What does ChannelFuture() do?
ChannelFuture() is a function in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http2/Http2FrameWriterDataBenchmark.java.
Where is ChannelFuture() defined?
ChannelFuture() is defined in microbench/src/main/java/io/netty/handler/codec/http2/Http2FrameWriterDataBenchmark.java at line 119.
What does ChannelFuture() call?
ChannelFuture() calls 3 function(s): DataFrameHeader, paddingBytes, release.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free