Class LzfCompressor

    • Method Detail

      • newFactory

        public static Supplier<LzfCompressor> newFactory()
        Creates a new LZF compressor factory with the most optimal available methods for underlying data access. It will "unsafe" instance if one can be used on current JVM. It should be safe to call this constructor as implementations are dynamically loaded; however, on some non-standard platforms it may be necessary to use newFactory(boolean) with true param.
        Returns:
        the factory.
      • newFactory

        public static Supplier<LzfCompressor> newFactory​(boolean safeInstance)
        Creates a new LZF compressor factory with specified encoding instance.
        Parameters:
        safeInstance - If true encoder will use ChunkEncoder that only uses standard JDK access methods, and should work on all Java platforms and JVMs. Otherwise encoder will try to use highly optimized ChunkEncoder implementation that uses Sun JDK's Unsafe class (which may be included by other JDK's as well).
        Returns:
        the factory.
      • newFactory

        public static Supplier<LzfCompressor> newFactory​(boolean safeInstance,
                                                         int totalLength)
        Creates a new LZF compressor factory with specified encoding instance and compressThreshold.
        Parameters:
        safeInstance - If true encoder will use ChunkEncoder that only uses standard JDK access methods, and should work on all Java platforms and JVMs. Otherwise encoder will try to use highly optimized ChunkEncoder implementation that uses Sun JDK's Unsafe class (which may be included by other JDK's as well).
        totalLength - Expected total length of content to compress; only matters for outgoing messages that is smaller than maximum chunk size (64k), to optimize encoding hash tables.
        Returns:
        the factory.
      • newFactory

        public static Supplier<LzfCompressor> newFactory​(int totalLength)
        Creates a new LZF compressor factory with specified total length of encoded chunk. You can configure it to encode your data flow more efficient if you know the average size of messages that you send.
        Parameters:
        totalLength - Expected total length of content to compress; only matters for outgoing messages that is smaller than maximum chunk size (64k), to optimize encoding hash tables.
        Returns:
        the factory.
      • newFactory

        public static Supplier<LzfCompressor> newFactory​(boolean safeInstance,
                                                         int totalLength,
                                                         int compressThreshold)
        Creates a new LZF compressor factory with specified settings.
        Parameters:
        safeInstance - If true encoder will use ChunkEncoder that only uses standard JDK access methods, and should work on all Java platforms and JVMs. Otherwise encoder will try to use highly optimized ChunkEncoder implementation that uses Sun JDK's Unsafe class (which may be included by other JDK's as well).
        totalLength - Expected total length of content to compress; only matters for outgoing messages that is smaller than maximum chunk size (64k), to optimize encoding hash tables.
        compressThreshold - Compress threshold for LZF format. When the amount of input data is less than compressThreshold, we will construct an uncompressed output according to the LZF format.
        Returns:
        the factory.
      • compress

        public Buffer compress​(Buffer in,
                               BufferAllocator allocator)
                        throws CompressionException
        Description copied from interface: Compressor
        This method will read from the input Buffer and compress into a new Buffer that will be allocated (if needed) from the BufferAllocator. This method is expected to consume all data from the input but not take ownership. The caller is responsible to release the input buffer after this method returns.
        Specified by:
        compress in interface Compressor
        Parameters:
        in - the Buffer that contains the data to be compressed.
        allocator - the BufferAllocator that is used to allocate a new buffer (if needed) to write the compressed bytes too.
        Returns:
        the Buffer that contains the compressed data. The caller of this method takes ownership of the buffer. The return value will never be null.
        Throws:
        CompressionException - thrown if an compression error was encountered or the compressor was closed already.
      • finish

        public Buffer finish​(BufferAllocator allocator)
        Description copied from interface: Compressor
        By calling this method we signal that the compression stream is marked as finish. The returned Buffer might contain a "trailer" which marks the end of the stream.
        Specified by:
        finish in interface Compressor
        Returns:
        the Buffer which represent the end of the compression stream, which might be empty if the compressor don't need a trailer to signal the end. The caller of this method takes ownership of the buffer. The return value will never be null.
      • isClosed

        public boolean isClosed()
        Description copied from interface: Compressor
        Return true if the decompressor was closed, false otherwise.
        Specified by:
        isClosed in interface Compressor
        Returns:
        true if the decompressor was closed, false otherwise.