Class Lz4FrameDecoder

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler

    public class Lz4FrameDecoder
    extends ByteToMessageDecoder
    Uncompresses a ByteBuf encoded with the LZ4 format. See original LZ4 Github project and LZ4 block format for full description. Since the original LZ4 block format does not contains size of compressed block and size of original data this encoder uses format like LZ4 Java library written by Adrien Grand and approved by Yann Collet (author of original LZ4 library). * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Magic * Token * Compressed * Decompressed * Checksum * + * LZ4 compressed * * * * length * length * * * block * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    • Constructor Detail

      • Lz4FrameDecoder

        public Lz4FrameDecoder()
        Creates the fastest LZ4 decoder. Note that by default, validation of the checksum header in each chunk is DISABLED for performance improvements. If performance is less of an issue, or if you would prefer the safety that checksum validation brings, please use the Lz4FrameDecoder(boolean) constructor with the argument set to true.
      • Lz4FrameDecoder

        public Lz4FrameDecoder​(boolean validateChecksums)
        Creates a LZ4 decoder with fastest decoder instance available on your machine.
        Parameters:
        validateChecksums - if true, the checksum field will be validated against the actual uncompressed data, and if the checksums do not match, a suitable DecompressionException will be thrown
      • Lz4FrameDecoder

        public Lz4FrameDecoder​(net.jpountz.lz4.LZ4Factory factory,
                               boolean validateChecksums)
        Creates a new LZ4 decoder with customizable implementation.
        Parameters:
        factory - user customizable LZ4Factory instance which may be JNI bindings to the original C implementation, a pure Java implementation or a Java implementation that uses the Unsafe
        validateChecksums - if true, the checksum field will be validated against the actual uncompressed data, and if the checksums do not match, a suitable DecompressionException will be thrown. In this case encoder will use xxhash hashing for Java, based on Yann Collet's work available at Github.
      • Lz4FrameDecoder

        public Lz4FrameDecoder​(net.jpountz.lz4.LZ4Factory factory,
                               Checksum checksum)
        Creates a new customizable LZ4 decoder.
        Parameters:
        factory - user customizable LZ4Factory instance which may be JNI bindings to the original C implementation, a pure Java implementation or a Java implementation that uses the Unsafe
        checksum - the Checksum instance to use to check data for integrity. You may set null if you do not want to validate checksum of each block
    • Method Detail

      • decode

        protected void decode​(io.netty.channel.ChannelHandlerContext ctx,
                              io.netty.buffer.ByteBuf in,
                              List<Object> out)
                       throws Exception
        Description copied from class: ByteToMessageDecoder
        Decode the from one ByteBuf to an other. This method will be called till either the input ByteBuf has nothing to read when return from this method or till nothing was read from the input ByteBuf.
        Specified by:
        decode in class ByteToMessageDecoder
        Parameters:
        ctx - the ChannelHandlerContext which this ByteToMessageDecoder belongs to
        in - the ByteBuf from which to read data
        out - the List to which decoded messages should be added
        Throws:
        Exception - is thrown if an error occurs
      • isClosed

        public boolean isClosed()
        Returns true if and only if the end of the compressed stream has been reached.