CompressorHttp2ConnectionEncoder Class — netty Architecture
Architecture documentation for the CompressorHttp2ConnectionEncoder class in CompressorHttp2ConnectionEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8d787c1c_5f3d_4d80_1537_18462b224aaf["CompressorHttp2ConnectionEncoder"] 132801ab_f5f3_3384_2091_8a230ecf9483["CompressorHttp2ConnectionEncoder.java"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|defined in| 132801ab_f5f3_3384_2091_8a230ecf9483 a8d7ae06_b532_59bb_bf87_da372910c2dd["CompressorHttp2ConnectionEncoder()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| a8d7ae06_b532_59bb_bf87_da372910c2dd 0103adf6_a534_4791_ec3c_5e671a167d8c["defaultCompressionOptions()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| 0103adf6_a534_4791_ec3c_5e671a167d8c 379ae9ad_6cf0_7b95_0348_d4a8f9f0c7c1["ChannelFuture()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| 379ae9ad_6cf0_7b95_0348_d4a8f9f0c7c1 ad5be4b8_f500_4d94_8f0a_49015942574d["EmbeddedChannel()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| ad5be4b8_f500_4d94_8f0a_49015942574d 9133a6f7_1526_b3e2_3d9c_1f88b3ba4a62["CharSequence()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| 9133a6f7_1526_b3e2_3d9c_1f88b3ba4a62 05f589c3_391d_c20c_d485_95f6c4f2230c["bindCompressorToStream()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| 05f589c3_391d_c20c_d485_95f6c4f2230c c2a3977b_4edd_973b_0b72_4eff08ff08ac["cleanup()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| c2a3977b_4edd_973b_0b72_4eff08ff08ac b4e55b7b_85ba_020e_b75e_18673536c9de["ByteBuf()"] 8d787c1c_5f3d_4d80_1537_18462b224aaf -->|method| b4e55b7b_85ba_020e_b75e_18673536c9de
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java lines 63–460
public class CompressorHttp2ConnectionEncoder extends DecoratingHttp2ConnectionEncoder {
// We cannot remove this because it'll be breaking change
public static final int DEFAULT_COMPRESSION_LEVEL = 6;
public static final int DEFAULT_WINDOW_BITS = 15;
public static final int DEFAULT_MEM_LEVEL = 8;
private int compressionLevel;
private int windowBits;
private int memLevel;
private final Http2Connection.PropertyKey propertyKey;
private final boolean supportsCompressionOptions;
private BrotliOptions brotliOptions;
private GzipOptions gzipCompressionOptions;
private DeflateOptions deflateOptions;
private ZstdOptions zstdOptions;
private SnappyOptions snappyOptions;
/**
* Create a new {@link CompressorHttp2ConnectionEncoder} instance
* with default implementation of {@link StandardCompressionOptions}
*/
public CompressorHttp2ConnectionEncoder(Http2ConnectionEncoder delegate) {
this(delegate, defaultCompressionOptions());
}
private static CompressionOptions[] defaultCompressionOptions() {
List<CompressionOptions> compressionOptions = new ArrayList<CompressionOptions>();
compressionOptions.add(StandardCompressionOptions.gzip());
compressionOptions.add(StandardCompressionOptions.deflate());
compressionOptions.add(StandardCompressionOptions.snappy());
if (Brotli.isAvailable()) {
compressionOptions.add(StandardCompressionOptions.brotli());
}
if (Zstd.isAvailable()) {
compressionOptions.add(StandardCompressionOptions.zstd());
}
return compressionOptions.toArray(new CompressionOptions[0]);
}
/**
* Create a new {@link CompressorHttp2ConnectionEncoder} instance
*/
@Deprecated
public CompressorHttp2ConnectionEncoder(Http2ConnectionEncoder delegate, int compressionLevel, int windowBits,
int memLevel) {
super(delegate);
this.compressionLevel = ObjectUtil.checkInRange(compressionLevel, 0, 9, "compressionLevel");
this.windowBits = ObjectUtil.checkInRange(windowBits, 9, 15, "windowBits");
this.memLevel = ObjectUtil.checkInRange(memLevel, 1, 9, "memLevel");
propertyKey = connection().newKey();
connection().addListener(new Http2ConnectionAdapter() {
@Override
public void onStreamRemoved(Http2Stream stream) {
final EmbeddedChannel compressor = stream.getProperty(propertyKey);
if (compressor != null) {
cleanup(stream, compressor);
}
}
});
supportsCompressionOptions = false;
}
/**
* Create a new {@link CompressorHttp2ConnectionEncoder} with
* specified {@link StandardCompressionOptions}
*/
public CompressorHttp2ConnectionEncoder(Http2ConnectionEncoder delegate,
CompressionOptions... compressionOptionsArgs) {
super(delegate);
ObjectUtil.checkNotNull(compressionOptionsArgs, "CompressionOptions");
ObjectUtil.deepCheckNotNull("CompressionOptions", compressionOptionsArgs);
for (CompressionOptions compressionOptions : compressionOptionsArgs) {
// BrotliOptions' class initialization depends on Brotli classes being on the classpath.
// The Brotli.isAvailable check ensures that BrotliOptions will only get instantiated if Brotli is on
// the classpath.
// This results in the static analysis of native-image identifying the instanceof BrotliOptions check
Defined In
Source
Frequently Asked Questions
What is the CompressorHttp2ConnectionEncoder class?
CompressorHttp2ConnectionEncoder is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java.
Where is CompressorHttp2ConnectionEncoder defined?
CompressorHttp2ConnectionEncoder is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java at line 63.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free