Class ReuseBuffersLZ4BlockOutputStream

org.elasticsearch.transport.ReuseBuffersLZ4BlockOutputStream
All Implemented Interfaces:
, ,

public class ReuseBuffersLZ4BlockOutputStream extends
This file is forked from https://github.com/lz4/lz4-java. In particular it forks the following file net.jpountz.lz4.LZ4BlockOutputStream. It modifies the original lz4-java code to allow the reuse of local thread local byte arrays. This prevents the need to allocate two new byte arrays everytime a new stream is created. For the Elasticsearch use case, a single thread should fully compress the stream in one go to avoid memory corruption. Streaming LZ4 (not compatible with the LZ4 Frame format). This class compresses data into fixed-size blocks of compressed data. This class uses its own format and is not compatible with the LZ4 Frame format. For interoperability with other LZ4 tools, use LZ4FrameOutputStream, which is compatible with the LZ4 Frame format. This class remains for backward compatibility.
See Also:
LZ4BlockInputStream, LZ4FrameOutputStream
  • Field Summary

    Fields inherited from class java.io.

  • Constructor Summary

    Constructors
    Constructor
    Description
     out)
    Creates a new instance which compresses into blocks of 64 KB.
     out, int blockSize)
    Creates a new instance which compresses with the standard LZ4 compression algorithm.
     out, int blockSize, net.jpountz.lz4.LZ4Compressor compressor)
    Creates a new instance which checks stream integrity using StreamingXXHash32 and doesn't sync flush.
     out, int blockSize, net.jpountz.lz4.LZ4Compressor compressor,  checksum, boolean syncFlush)
    Creates a new with configurable block size.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    void
    Same as close() except that it doesn't close the underlying stream.
    void
    Flushes this compressed .
     
    void
    write​(byte[] b)
     
    void
    write​(byte[] b, int off, int len)
     
    void
    write​(int b)
     

    Methods inherited from class java.io.

    Methods inherited from class java.lang.

    , , , , , , , , ,
  • Constructor Details

    • ReuseBuffersLZ4BlockOutputStream

      public ReuseBuffersLZ4BlockOutputStream( out, int blockSize, net.jpountz.lz4.LZ4Compressor compressor,  checksum, boolean syncFlush)
      Creates a new with configurable block size. Large blocks require more memory at compression and decompression time but should improve the compression ratio.
      Parameters:
      out - the to feed
      blockSize - the maximum number of bytes to try to compress at once, must be >= 64 and <= 32 M
      compressor - the LZ4Compressor instance to use to compress data
      checksum - the instance to use to check data for integrity.
      syncFlush - true if pending data should also be flushed on flush()
    • ReuseBuffersLZ4BlockOutputStream

      public ReuseBuffersLZ4BlockOutputStream( out, int blockSize, net.jpountz.lz4.LZ4Compressor compressor)
      Creates a new instance which checks stream integrity using StreamingXXHash32 and doesn't sync flush.
      Parameters:
      out - the to feed
      blockSize - the maximum number of bytes to try to compress at once, must be >= 64 and <= 32 M
      compressor - the LZ4Compressor instance to use to compress data
      See Also:
      ReuseBuffersLZ4BlockOutputStream(OutputStream, int, LZ4Compressor, Checksum, boolean), StreamingXXHash32.asChecksum()
    • ReuseBuffersLZ4BlockOutputStream

      public ReuseBuffersLZ4BlockOutputStream( out, int blockSize)
      Creates a new instance which compresses with the standard LZ4 compression algorithm.
      Parameters:
      out - the to feed
      blockSize - the maximum number of bytes to try to compress at once, must be >= 64 and <= 32 M
      See Also:
      ReuseBuffersLZ4BlockOutputStream(OutputStream, int, LZ4Compressor), LZ4Factory.fastCompressor()
    • ReuseBuffersLZ4BlockOutputStream

      public ReuseBuffersLZ4BlockOutputStream( out)
      Creates a new instance which compresses into blocks of 64 KB.
      Parameters:
      out - the to feed
      See Also:
      ReuseBuffersLZ4BlockOutputStream(OutputStream, int)
  • Method Details

    • write

      public void write(int b) throws
      Overrides:
       in class 
      Throws:
    • write

      public void write(byte[] b, int off, int len) throws
      Overrides:
       in class 
      Throws:
    • write

      public void write(byte[] b) throws
      Overrides:
       in class 
      Throws:
    • close

      public void close() throws
      Specified by:
       in interface 
      Specified by:
       in interface 
      Overrides:
       in class 
      Throws:
    • flush

      public void flush() throws
      Flushes this compressed . If the stream has been created with syncFlush=true, pending data will be compressed and appended to the underlying before calling on the underlying stream. Otherwise, this method just flushes the underlying stream, so pending data might not be available for reading until finish() or close() is called.
      Specified by:
       in interface 
      Overrides:
       in class 
      Throws:
    • finish

      public void finish() throws
      Same as close() except that it doesn't close the underlying stream. This can be useful if you want to keep on using the underlying stream.
      Throws:
      - if an I/O error occurs.
    • toString

      public  toString()
      Overrides:
       in class