1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.compression;
17
18 import io.netty.util.internal.ObjectUtil;
19
20 import static io.netty.handler.codec.compression.ZstdConstants.DEFAULT_COMPRESSION_LEVEL;
21 import static io.netty.handler.codec.compression.ZstdConstants.MIN_COMPRESSION_LEVEL;
22 import static io.netty.handler.codec.compression.ZstdConstants.MAX_COMPRESSION_LEVEL;
23 import static io.netty.handler.codec.compression.ZstdConstants.DEFAULT_BLOCK_SIZE;
24 import static io.netty.handler.codec.compression.ZstdConstants.DEFAULT_MAX_ENCODE_SIZE;
25
26
27
28
29
30 public class ZstdOptions implements CompressionOptions {
31
32 private final int blockSize;
33 private final int compressionLevel;
34 private final int maxEncodeSize;
35
36
37
38
39
40
41 static final ZstdOptions DEFAULT = new ZstdOptions(DEFAULT_COMPRESSION_LEVEL, DEFAULT_BLOCK_SIZE,
42 DEFAULT_MAX_ENCODE_SIZE);
43
44
45
46
47
48
49
50
51
52
53
54 ZstdOptions(int compressionLevel, int blockSize, int maxEncodeSize) {
55 if (!Zstd.isAvailable()) {
56 throw new IllegalStateException("zstd-jni is not available", Zstd.cause());
57 }
58
59 this.compressionLevel = ObjectUtil.checkInRange(compressionLevel,
60 MIN_COMPRESSION_LEVEL, MAX_COMPRESSION_LEVEL, "compressionLevel");
61 this.blockSize = ObjectUtil.checkPositive(blockSize, "blockSize");
62 this.maxEncodeSize = ObjectUtil.checkPositive(maxEncodeSize, "maxEncodeSize");
63 }
64
65 public int compressionLevel() {
66 return compressionLevel;
67 }
68
69 public int blockSize() {
70 return blockSize;
71 }
72
73 public int maxEncodeSize() {
74 return maxEncodeSize;
75 }
76 }