Package com.ning.compress.lzf
Class LZFCompressingInputStream
- java.lang.Object
-
- java.io.InputStream
-
- com.ning.compress.lzf.LZFCompressingInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class LZFCompressingInputStream extends java.io.InputStreamDecoratorInputStreamimplementation used for reading uncompressed data and compressing it on the fly, such that reads return compressed data. It is reverse ofLZFInputStream(which instead uncompresses data).- See Also:
LZFInputStream
-
-
Field Summary
Fields Modifier and Type Field Description protected int_bufferLengthLength of the current uncompressed bytes bufferprotected int_bufferPositionThe current position (next char to output) in the uncompressed bytes buffer.protected boolean_cfgFullReadsFlag that indicates whether we force full reads (reading of as many bytes as requested), or 'optimal' reads (up to as many as available, but at least one).protected byte[]_encodedBytesBuffer that contains compressed data that is returned to readers.private ChunkEncoder_encoderprotected byte[]_inputBufferBuffer in which uncompressed input is first read, before getting encoded in_encodedBytes.protected java.io.InputStream_inputStreamStream used for reading data to be compressedprotected boolean_inputStreamClosedFlag that indicates if we have already called 'inputStream.close()' (to avoid calling it multiple times)protected int_readCountNumber of bytes read from the underlying_inputStreamprivate BufferRecycler_recycler
-
Constructor Summary
Constructors Constructor Description LZFCompressingInputStream(ChunkEncoder encoder, java.io.InputStream in)LZFCompressingInputStream(ChunkEncoder encoder, java.io.InputStream in, BufferRecycler bufferRecycler)LZFCompressingInputStream(java.io.InputStream in)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void_closeInput()intavailable()voidclose()intread()intread(byte[] buffer)intread(byte[] buffer, int offset, int length)protected booleanreadyBuffer()Fill the uncompressed bytes buffer by reading the underlying inputStream.voidsetUseFullReads(boolean b)Method that can be used define whether reads should be "full" or "optimal": former means that full compressed blocks are read right away as needed, optimal that only smaller chunks are read at a time, more being read as needed.longskip(long n)Overridden to just skip at most a single chunk at a time
-
-
-
Field Detail
-
_recycler
private final BufferRecycler _recycler
-
_encoder
private ChunkEncoder _encoder
-
_inputStream
protected final java.io.InputStream _inputStream
Stream used for reading data to be compressed
-
_inputStreamClosed
protected boolean _inputStreamClosed
Flag that indicates if we have already called 'inputStream.close()' (to avoid calling it multiple times)
-
_cfgFullReads
protected boolean _cfgFullReads
Flag that indicates whether we force full reads (reading of as many bytes as requested), or 'optimal' reads (up to as many as available, but at least one). Default is false, meaning that 'optimal' read is used.
-
_inputBuffer
protected byte[] _inputBuffer
Buffer in which uncompressed input is first read, before getting encoded in_encodedBytes.
-
_encodedBytes
protected byte[] _encodedBytes
Buffer that contains compressed data that is returned to readers.
-
_bufferPosition
protected int _bufferPosition
The current position (next char to output) in the uncompressed bytes buffer.
-
_bufferLength
protected int _bufferLength
Length of the current uncompressed bytes buffer
-
_readCount
protected int _readCount
Number of bytes read from the underlying_inputStream
-
-
Constructor Detail
-
LZFCompressingInputStream
public LZFCompressingInputStream(java.io.InputStream in)
-
LZFCompressingInputStream
public LZFCompressingInputStream(ChunkEncoder encoder, java.io.InputStream in)
-
LZFCompressingInputStream
public LZFCompressingInputStream(ChunkEncoder encoder, java.io.InputStream in, BufferRecycler bufferRecycler)
-
-
Method Detail
-
setUseFullReads
public void setUseFullReads(boolean b)
Method that can be used define whether reads should be "full" or "optimal": former means that full compressed blocks are read right away as needed, optimal that only smaller chunks are read at a time, more being read as needed.
-
available
public int available()
- Overrides:
availablein classjava.io.InputStream
-
read
public int read() throws java.io.IOException- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] buffer) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] buffer, int offset, int length) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException
-
_closeInput
private void _closeInput() throws java.io.IOException- Throws:
java.io.IOException
-
skip
public long skip(long n) throws java.io.IOExceptionOverridden to just skip at most a single chunk at a time- Overrides:
skipin classjava.io.InputStream- Throws:
java.io.IOException
-
readyBuffer
protected boolean readyBuffer() throws java.io.IOExceptionFill the uncompressed bytes buffer by reading the underlying inputStream.- Throws:
java.io.IOException
-
-