FlowControlledHeaders Class — netty Architecture
Architecture documentation for the FlowControlledHeaders class in DefaultHttp2ConnectionEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 744ef0a5_0445_f8d5_b780_329fc3f741f7["FlowControlledHeaders"] 6ee2373c_9254_f504_1a3e_e58265550287["DefaultHttp2ConnectionEncoder.java"] 744ef0a5_0445_f8d5_b780_329fc3f741f7 -->|defined in| 6ee2373c_9254_f504_1a3e_e58265550287 3cbf6447_3cb5_f2c9_125c_6b623cb2aab0["FlowControlledHeaders()"] 744ef0a5_0445_f8d5_b780_329fc3f741f7 -->|method| 3cbf6447_3cb5_f2c9_125c_6b623cb2aab0 6dda0308_832e_31f8_38c9_0a9e3e2d0dab["size()"] 744ef0a5_0445_f8d5_b780_329fc3f741f7 -->|method| 6dda0308_832e_31f8_38c9_0a9e3e2d0dab 68ae7f94_6431_c8f3_425c_0abbb5fa9c40["error()"] 744ef0a5_0445_f8d5_b780_329fc3f741f7 -->|method| 68ae7f94_6431_c8f3_425c_0abbb5fa9c40 d9006e3b_57b1_d5dd_3732_26d895ab9344["write()"] 744ef0a5_0445_f8d5_b780_329fc3f741f7 -->|method| d9006e3b_57b1_d5dd_3732_26d895ab9344 54ad0ead_8814_ee90_ecf9_bbcffdf29559["merge()"] 744ef0a5_0445_f8d5_b780_329fc3f741f7 -->|method| 54ad0ead_8814_ee90_ecf9_bbcffdf29559
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java lines 541–594
private final class FlowControlledHeaders extends FlowControlledBase {
private final Http2Headers headers;
private final boolean hasPriority;
private final int streamDependency;
private final short weight;
private final boolean exclusive;
FlowControlledHeaders(Http2Stream stream, Http2Headers headers, boolean hasPriority,
int streamDependency, short weight, boolean exclusive,
int padding, boolean endOfStream, ChannelPromise promise) {
super(stream, padding, endOfStream, promise.unvoid());
this.headers = headers;
this.hasPriority = hasPriority;
this.streamDependency = streamDependency;
this.weight = weight;
this.exclusive = exclusive;
}
@Override
public int size() {
return 0;
}
@Override
public void error(ChannelHandlerContext ctx, Throwable cause) {
if (ctx != null) {
lifecycleManager.onError(ctx, true, cause);
}
promise.tryFailure(cause);
}
@Override
public void write(ChannelHandlerContext ctx, int allowedBytes) {
boolean isInformational = validateHeadersSentState(stream, headers, connection.isServer(), endOfStream);
// The code is currently requiring adding this listener before writing, in order to call onError() before
// closeStreamLocal().
promise.addListener(this);
ChannelFuture f = sendHeaders(frameWriter, ctx, stream.id(), headers, hasPriority, streamDependency,
weight, exclusive, padding, endOfStream, promise);
// Writing headers may fail during the encode state if they violate HPACK limits.
Throwable failureCause = f.cause();
if (failureCause == null) {
// This just sets internal stream state which is used elsewhere in the codec and doesn't
// necessarily mean the write will complete successfully.
stream.headersSent(isInformational);
}
}
@Override
public boolean merge(ChannelHandlerContext ctx, Http2RemoteFlowController.FlowControlled next) {
return false;
}
}
Defined In
Source
Frequently Asked Questions
What is the FlowControlledHeaders class?
FlowControlledHeaders is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java.
Where is FlowControlledHeaders defined?
FlowControlledHeaders is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java at line 541.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free