Http2ChannelUnsafe Class — netty Architecture
Architecture documentation for the Http2ChannelUnsafe class in AbstractHttp2StreamChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 2656dcfe_5cdb_7c7d_bc25_312393fe2e05["Http2ChannelUnsafe"] 53b73d84_de3f_a5ff_9f0d_ff98834dbbb4["AbstractHttp2StreamChannel.java"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|defined in| 53b73d84_de3f_a5ff_9f0d_ff98834dbbb4 3fa6e5ee_00d3_a9e7_4e43_0cd936931029["connect()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 3fa6e5ee_00d3_a9e7_4e43_0cd936931029 061edcf4_92d7_3247_2f08_9c8c996847ae["recvBufAllocHandle()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 061edcf4_92d7_3247_2f08_9c8c996847ae 6e019f39_2442_8848_1140_b6561448e189["SocketAddress()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 6e019f39_2442_8848_1140_b6561448e189 5e161669_dd38_6929_7a61_a0ebc4575793["register()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 5e161669_dd38_6929_7a61_a0ebc4575793 cf64a4cf_dc1c_6f8f_292d_df6b190e54e1["bind()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| cf64a4cf_dc1c_6f8f_292d_df6b190e54e1 4e96b604_607e_2027_3ab1_e03e1cedcbdd["disconnect()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 4e96b604_607e_2027_3ab1_e03e1cedcbdd 215b8316_feb5_500b_88f8_49eff0eac336["close()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 215b8316_feb5_500b_88f8_49eff0eac336 8a1829a9_4ff0_0fdc_6f6f_98fc1f844f84["closeForcibly()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 8a1829a9_4ff0_0fdc_6f6f_98fc1f844f84 0c2d25a1_4b0f_f8bb_685e_513d76901377["deregister()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 0c2d25a1_4b0f_f8bb_685e_513d76901377 392e63a7_22b4_b12e_e643_274bcc99a5bf["fireChannelInactiveAndDeregister()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 392e63a7_22b4_b12e_e643_274bcc99a5bf 8c56fb74_b80c_02ad_25a4_65eb61eff7ea["safeSetSuccess()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 8c56fb74_b80c_02ad_25a4_65eb61eff7ea b44453f3_32d7_e262_679e_0dfc1635685a["invokeLater()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| b44453f3_32d7_e262_679e_0dfc1635685a 3a18b33a_f9a8_0622_5d3c_59bf383e0e3a["beginRead()"] 2656dcfe_5cdb_7c7d_bc25_312393fe2e05 -->|method| 3a18b33a_f9a8_0622_5d3c_59bf383e0e3a
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java lines 630–1191
private final class Http2ChannelUnsafe implements Unsafe {
private final VoidChannelPromise unsafeVoidPromise =
new VoidChannelPromise(AbstractHttp2StreamChannel.this, false);
@SuppressWarnings("deprecation")
private RecvByteBufAllocator.Handle recvHandle;
private boolean writeDoneAndNoFlush;
private boolean closeInitiated;
private boolean readEOS;
private boolean receivedEndOfStream;
private boolean sentEndOfStream;
@Override
public void connect(final SocketAddress remoteAddress,
SocketAddress localAddress, final ChannelPromise promise) {
if (!promise.setUncancellable()) {
return;
}
promise.setFailure(new UnsupportedOperationException());
}
@Override
public RecvByteBufAllocator.Handle recvBufAllocHandle() {
if (recvHandle == null) {
recvHandle = config().getRecvByteBufAllocator().newHandle();
recvHandle.reset(config());
}
return recvHandle;
}
@Override
public SocketAddress localAddress() {
return parent().unsafe().localAddress();
}
@Override
public SocketAddress remoteAddress() {
return parent().unsafe().remoteAddress();
}
@Override
public void register(EventLoop eventLoop, ChannelPromise promise) {
if (!promise.setUncancellable()) {
return;
}
if (registered) {
promise.setFailure(new UnsupportedOperationException("Re-register is not supported"));
return;
}
registered = true;
promise.setSuccess();
pipeline().fireChannelRegistered();
if (isActive()) {
pipeline().fireChannelActive();
}
}
@Override
public void bind(SocketAddress localAddress, ChannelPromise promise) {
if (!promise.setUncancellable()) {
return;
}
promise.setFailure(new UnsupportedOperationException());
}
@Override
public void disconnect(ChannelPromise promise) {
close(promise);
}
@Override
public void close(final ChannelPromise promise) {
close(promise, null);
}
private void close(final ChannelPromise promise, Http2Error error) {
if (!promise.setUncancellable()) {
return;
Source
Frequently Asked Questions
What is the Http2ChannelUnsafe class?
Http2ChannelUnsafe is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java.
Where is Http2ChannelUnsafe defined?
Http2ChannelUnsafe is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java at line 630.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free