Class FastLz
java.lang.Object
io.netty.handler.codec.compression.FastLz
Core of FastLZ compression algorithm.
This class provides methods for compression and decompression of buffers and saves
constants which use by
FastLzFrameEncoder
and FastLzFrameDecoder
.
This is refactored code of jfastlz
library written by William Kinney.-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final byte
(package private) static final byte
(package private) static final byte
(package private) static final byte
(package private) static final int
private static final int
private static final int
private static final int
(package private) static final int
Level 1 is the fastest compression and generally useful for short data.(package private) static final int
Level 2 is slightly slower but it gives better compression ratio.(package private) static final int
In this casecompress(ByteBuf, int, int, ByteBuf, int, int)
will choose level automatically depending on the length of the input buffer.(package private) static final int
(package private) static final int
private static final int
private static final int
private static final int
private static final int
(package private) static final int
Do not callcompress(ByteBuf, int, int, ByteBuf, int, int)
for input buffers which length less than this value.private static final int
(package private) static final int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static int
calculateOutputBufferLength
(int inputLength) The output buffer must be at least 6% larger than the input buffer and can not be smaller than 66 bytes.(package private) static int
compress
(ByteBuf input, int inOffset, int inLength, ByteBuf output, int outOffset, int proposedLevel) Compress a block of data in the input buffer and returns the size of compressed block.(package private) static int
decompress
(ByteBuf input, int inOffset, int inLength, ByteBuf output, int outOffset, int outLength) Decompress a block of compressed data and returns the size of the decompressed block.private static int
hashFunction
(ByteBuf p, int offset) private static int
-
Field Details
-
MAX_DISTANCE
private static final int MAX_DISTANCE- See Also:
-
MAX_FARDISTANCE
private static final int MAX_FARDISTANCE- See Also:
-
HASH_LOG
private static final int HASH_LOG- See Also:
-
HASH_SIZE
private static final int HASH_SIZE- See Also:
-
HASH_MASK
private static final int HASH_MASK- See Also:
-
MAX_COPY
private static final int MAX_COPY- See Also:
-
MAX_LEN
private static final int MAX_LEN- See Also:
-
MIN_RECOMENDED_LENGTH_FOR_LEVEL_2
private static final int MIN_RECOMENDED_LENGTH_FOR_LEVEL_2- See Also:
-
MAGIC_NUMBER
static final int MAGIC_NUMBER- See Also:
-
BLOCK_TYPE_NON_COMPRESSED
static final byte BLOCK_TYPE_NON_COMPRESSED- See Also:
-
BLOCK_TYPE_COMPRESSED
static final byte BLOCK_TYPE_COMPRESSED- See Also:
-
BLOCK_WITHOUT_CHECKSUM
static final byte BLOCK_WITHOUT_CHECKSUM- See Also:
-
BLOCK_WITH_CHECKSUM
static final byte BLOCK_WITH_CHECKSUM- See Also:
-
OPTIONS_OFFSET
static final int OPTIONS_OFFSET- See Also:
-
CHECKSUM_OFFSET
static final int CHECKSUM_OFFSET- See Also:
-
MAX_CHUNK_LENGTH
static final int MAX_CHUNK_LENGTH- See Also:
-
MIN_LENGTH_TO_COMPRESSION
static final int MIN_LENGTH_TO_COMPRESSIONDo not callcompress(ByteBuf, int, int, ByteBuf, int, int)
for input buffers which length less than this value.- See Also:
-
LEVEL_AUTO
static final int LEVEL_AUTOIn this casecompress(ByteBuf, int, int, ByteBuf, int, int)
will choose level automatically depending on the length of the input buffer. If length less thanMIN_RECOMENDED_LENGTH_FOR_LEVEL_2
LEVEL_1
will be chosen, otherwiseLEVEL_2
.- See Also:
-
LEVEL_1
static final int LEVEL_1Level 1 is the fastest compression and generally useful for short data.- See Also:
-
LEVEL_2
static final int LEVEL_2Level 2 is slightly slower but it gives better compression ratio.- See Also:
-
-
Constructor Details
-
FastLz
private FastLz()
-
-
Method Details
-
calculateOutputBufferLength
static int calculateOutputBufferLength(int inputLength) The output buffer must be at least 6% larger than the input buffer and can not be smaller than 66 bytes.- Parameters:
inputLength
- length of input buffer- Returns:
- Maximum output buffer length
-
compress
static int compress(ByteBuf input, int inOffset, int inLength, ByteBuf output, int outOffset, int proposedLevel) Compress a block of data in the input buffer and returns the size of compressed block. The size of input buffer is specified by length. The minimum input buffer size is 32. If the input is not compressible, the return value might be larger than length (input buffer size). -
decompress
static int decompress(ByteBuf input, int inOffset, int inLength, ByteBuf output, int outOffset, int outLength) Decompress a block of compressed data and returns the size of the decompressed block. If error occurs, e.g. the compressed data is corrupted or the output buffer is not large enough, then 0 (zero) will be returned instead. Decompression is memory safe and guaranteed not to write the output buffer more than what is specified in outLength. -
hashFunction
-
readU16
-