1 /*
2 * Copyright 2021 The Netty Project
3 *
4 * The Netty Project licenses this file to you under the Apache License,
5 * version 2.0 (the "License"); you may not use this file except in compliance
6 * with the License. You may obtain a copy of the License at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations
14 * under the License.
15 */
16 package io.netty5.handler.codec.compression;
17
18 import io.netty5.util.internal.ObjectUtil;
19
20 /**
21 * {@link DeflateOptions} holds {@link #compressionLevel()},
22 * {@link #memLevel()} and {@link #windowBits()} for Deflate compression.
23 */
24 public class DeflateOptions implements CompressionOptions {
25
26 private final int compressionLevel;
27 private final int windowBits;
28 private final int memLevel;
29
30 /**
31 * @see StandardCompressionOptions#deflate()
32 */
33 static final DeflateOptions DEFAULT = new DeflateOptions(
34 6, 15, 8
35 );
36
37 /**
38 * @see StandardCompressionOptions#deflate(int, int, int)
39 */
40 DeflateOptions(int compressionLevel, int windowBits, int memLevel) {
41 this.compressionLevel = ObjectUtil.checkInRange(compressionLevel, 0, 9, "compressionLevel");
42 this.windowBits = ObjectUtil.checkInRange(windowBits, 9, 15, "windowBits");
43 this.memLevel = ObjectUtil.checkInRange(memLevel, 1, 9, "memLevel");
44 }
45
46 public int compressionLevel() {
47 return compressionLevel;
48 }
49
50 public int windowBits() {
51 return windowBits;
52 }
53
54 public int memLevel() {
55 return memLevel;
56 }
57 }