DefaultHttp2ConnectionEncoder Class — netty Architecture
Architecture documentation for the DefaultHttp2ConnectionEncoder class in DefaultHttp2ConnectionEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 895939a0_f585_4538_b1ac_90be365f6464["DefaultHttp2ConnectionEncoder"] 6ee2373c_9254_f504_1a3e_e58265550287["DefaultHttp2ConnectionEncoder.java"] 895939a0_f585_4538_b1ac_90be365f6464 -->|defined in| 6ee2373c_9254_f504_1a3e_e58265550287 0f86b7a0_ad68_53f6_a1ae_79ab0078197e["DefaultHttp2ConnectionEncoder()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 0f86b7a0_ad68_53f6_a1ae_79ab0078197e 35a4a0af_54de_ec31_56cd_87b3a295380c["lifecycleManager()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 35a4a0af_54de_ec31_56cd_87b3a295380c 2250337d_cf75_fa32_f2d8_1eec527a86a0["Http2FrameWriter()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 2250337d_cf75_fa32_f2d8_1eec527a86a0 99a764a3_5d38_92b5_b6f7_772b4b655c07["Http2Connection()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 99a764a3_5d38_92b5_b6f7_772b4b655c07 12d63d17_4db1_1ab8_9c09_64adbfe7fdd4["Http2RemoteFlowController()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 12d63d17_4db1_1ab8_9c09_64adbfe7fdd4 3b9fd337_1dee_1fd1_8836_e44e24fe69ae["remoteSettings()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 3b9fd337_1dee_1fd1_8836_e44e24fe69ae f7c83e25_f1bc_4ff3_1eaa_ebd5521fad31["ChannelFuture()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| f7c83e25_f1bc_4ff3_1eaa_ebd5521fad31 fc927e32_0015_8367_c80d_152971d2d016["validateHeadersSentState()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| fc927e32_0015_8367_c80d_152971d2d016 5406f95c_8457_e7c1_b4a1_fb2214b40c94["close()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 5406f95c_8457_e7c1_b4a1_fb2214b40c94 d44a59a2_d17e_778a_d6e4_5e4d99fe8f88["Http2Settings()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| d44a59a2_d17e_778a_d6e4_5e4d99fe8f88 b8ae0b17_4325_bdc1_c57b_560163940fbe["Configuration()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| b8ae0b17_4325_bdc1_c57b_560163940fbe 28005313_29f0_6118_edfe_4df9fd5529aa["Http2Stream()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 28005313_29f0_6118_edfe_4df9fd5529aa 2a881bdd_a61f_ddec_039f_13f1f832d86c["consumeReceivedSettings()"] 895939a0_f585_4538_b1ac_90be365f6464 -->|method| 2a881bdd_a61f_ddec_039f_13f1f832d86c
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java lines 41–629
public class DefaultHttp2ConnectionEncoder implements Http2ConnectionEncoder, Http2SettingsReceivedConsumer {
private final Http2FrameWriter frameWriter;
private final Http2Connection connection;
private Http2LifecycleManager lifecycleManager;
// We prefer ArrayDeque to LinkedList because later will produce more GC.
// This initial capacity is plenty for SETTINGS traffic.
private final Queue<Http2Settings> outstandingLocalSettingsQueue = new ArrayDeque<Http2Settings>(4);
private Queue<Http2Settings> outstandingRemoteSettingsQueue;
public DefaultHttp2ConnectionEncoder(Http2Connection connection, Http2FrameWriter frameWriter) {
this.connection = checkNotNull(connection, "connection");
this.frameWriter = checkNotNull(frameWriter, "frameWriter");
if (connection.remote().flowController() == null) {
connection.remote().flowController(new DefaultHttp2RemoteFlowController(connection));
}
}
@Override
public void lifecycleManager(Http2LifecycleManager lifecycleManager) {
this.lifecycleManager = checkNotNull(lifecycleManager, "lifecycleManager");
}
@Override
public Http2FrameWriter frameWriter() {
return frameWriter;
}
@Override
public Http2Connection connection() {
return connection;
}
@Override
public final Http2RemoteFlowController flowController() {
return connection().remote().flowController();
}
@Override
public void remoteSettings(Http2Settings settings) throws Http2Exception {
Boolean pushEnabled = settings.pushEnabled();
Http2FrameWriter.Configuration config = configuration();
Http2HeadersEncoder.Configuration outboundHeaderConfig = config.headersConfiguration();
Http2FrameSizePolicy outboundFrameSizePolicy = config.frameSizePolicy();
if (pushEnabled != null) {
if (!connection.isServer() && pushEnabled) {
throw connectionError(PROTOCOL_ERROR,
"Client received a value of ENABLE_PUSH specified to other than 0");
}
connection.remote().allowPushTo(pushEnabled);
}
Long maxConcurrentStreams = settings.maxConcurrentStreams();
if (maxConcurrentStreams != null) {
connection.local().maxActiveStreams((int) min(maxConcurrentStreams, MAX_VALUE));
}
Long headerTableSize = settings.headerTableSize();
if (headerTableSize != null) {
outboundHeaderConfig.maxHeaderTableSize(headerTableSize);
}
Long maxHeaderListSize = settings.maxHeaderListSize();
if (maxHeaderListSize != null) {
outboundHeaderConfig.maxHeaderListSize(maxHeaderListSize);
}
Integer maxFrameSize = settings.maxFrameSize();
if (maxFrameSize != null) {
outboundFrameSizePolicy.maxFrameSize(maxFrameSize);
}
Integer initialWindowSize = settings.initialWindowSize();
if (initialWindowSize != null) {
flowController().initialWindowSize(initialWindowSize);
}
}
@Override
public ChannelFuture writeData(final ChannelHandlerContext ctx, final int streamId, ByteBuf data, int padding,
final boolean endOfStream, ChannelPromise promise) {
promise = promise.unvoid();
Defined In
Source
Frequently Asked Questions
What is the DefaultHttp2ConnectionEncoder class?
DefaultHttp2ConnectionEncoder is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java.
Where is DefaultHttp2ConnectionEncoder defined?
DefaultHttp2ConnectionEncoder is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ConnectionEncoder.java at line 41.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free