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.buffer.ByteBuf;
19 import io.netty.util.internal.SystemPropertyUtil;
20
21 import java.nio.ByteBuffer;
22
23 final class CompressionUtil {
24
25 static final int DEFAULT_MAX_FORWARD_BYTES = SystemPropertyUtil.getInt(
26 "io.netty.compression.defaultMaxForwardBytes", 64 * 1024);
27
28 private CompressionUtil() { }
29
30 static void checkChecksum(ByteBufChecksum checksum, ByteBuf uncompressed, int currentChecksum) {
31 checksum.reset();
32 checksum.update(uncompressed,
33 uncompressed.readerIndex(), uncompressed.readableBytes());
34
35 final int checksumResult = (int) checksum.getValue();
36 if (checksumResult != currentChecksum) {
37 throw new DecompressionException(String.format(
38 "stream corrupted: mismatching checksum: %d (expected: %d)",
39 checksumResult, currentChecksum));
40 }
41 }
42
43 static ByteBuffer safeReadableNioBuffer(ByteBuf buffer) {
44 return safeNioBuffer(buffer, buffer.readerIndex(), buffer.readableBytes());
45 }
46
47 static ByteBuffer safeNioBuffer(ByteBuf buffer, int index, int length) {
48 return buffer.nioBufferCount() == 1 ? buffer.internalNioBuffer(index, length)
49 : buffer.nioBuffer(index, length);
50 }
51 }