public class FramedSnappyCompressorInputStream extends CompressorInputStream implements InputStreamStatistics
Based on the "spec" in the version "Last revised: 2013-10-25"
Modifier and Type | Field and Description |
---|---|
private int |
blockSize |
private PureJavaCrc32C |
checksum |
(package private) static int |
COMPRESSED_CHUNK_TYPE |
private CountingInputStream |
countingStream |
private SnappyCompressorInputStream |
currentCompressedChunk |
private FramedSnappyDialect |
dialect
The dialect to expect
|
private boolean |
endReached |
private long |
expectedChecksum |
private java.io.PushbackInputStream |
in
The underlying stream to read compressed data from
|
private boolean |
inUncompressedChunk |
(package private) static long |
MASK_OFFSET
package private for tests only.
|
private static int |
MAX_SKIPPABLE_TYPE |
private static int |
MAX_UNSKIPPABLE_TYPE |
private static int |
MIN_UNSKIPPABLE_TYPE |
private byte[] |
oneByte |
private static int |
PADDING_CHUNK_TYPE |
private static int |
STREAM_IDENTIFIER_TYPE |
private ByteUtils.ByteSupplier |
supplier |
(package private) static byte[] |
SZ_SIGNATURE |
private static int |
UNCOMPRESSED_CHUNK_TYPE |
private int |
uncompressedBytesRemaining |
private long |
unreadBytes |
Constructor and Description |
---|
FramedSnappyCompressorInputStream(java.io.InputStream in)
Constructs a new input stream that decompresses
snappy-framed-compressed data from the specified input stream
using the
FramedSnappyDialect.STANDARD dialect. |
FramedSnappyCompressorInputStream(java.io.InputStream in,
FramedSnappyDialect dialect)
Constructs a new input stream that decompresses snappy-framed-compressed data
from the specified input stream.
|
FramedSnappyCompressorInputStream(java.io.InputStream in,
int blockSize,
FramedSnappyDialect dialect)
Constructs a new input stream that decompresses snappy-framed-compressed data
from the specified input stream.
|
Modifier and Type | Method and Description |
---|---|
int |
available() |
void |
close() |
long |
getCompressedCount() |
static boolean |
matches(byte[] signature,
int length)
Checks if the signature matches what is expected for a .sz file.
|
int |
read() |
int |
read(byte[] b,
int off,
int len) |
private long |
readCrc() |
private void |
readNextBlock() |
private int |
readOnce(byte[] b,
int off,
int len)
Read from the current chunk into the given array.
|
private int |
readOneByte() |
private int |
readSize() |
private void |
readStreamIdentifier() |
private void |
skipBlock() |
(package private) static long |
unmask(long x) |
private void |
verifyLastChecksumAndReset() |
count, count, getBytesRead, getCount, getUncompressedCount, pushedBackBytes
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getUncompressedCount
static final long MASK_OFFSET
private static final int STREAM_IDENTIFIER_TYPE
static final int COMPRESSED_CHUNK_TYPE
private static final int UNCOMPRESSED_CHUNK_TYPE
private static final int PADDING_CHUNK_TYPE
private static final int MIN_UNSKIPPABLE_TYPE
private static final int MAX_UNSKIPPABLE_TYPE
private static final int MAX_SKIPPABLE_TYPE
static final byte[] SZ_SIGNATURE
private long unreadBytes
private final CountingInputStream countingStream
private final java.io.PushbackInputStream in
private final FramedSnappyDialect dialect
private SnappyCompressorInputStream currentCompressedChunk
private final byte[] oneByte
private boolean endReached
private boolean inUncompressedChunk
private int uncompressedBytesRemaining
private long expectedChecksum
private final int blockSize
private final PureJavaCrc32C checksum
private final ByteUtils.ByteSupplier supplier
public FramedSnappyCompressorInputStream(java.io.InputStream in) throws java.io.IOException
FramedSnappyDialect.STANDARD
dialect.in
- the InputStream from which to read the compressed datajava.io.IOException
- if reading failspublic FramedSnappyCompressorInputStream(java.io.InputStream in, FramedSnappyDialect dialect) throws java.io.IOException
in
- the InputStream from which to read the compressed datadialect
- the dialect used by the compressed streamjava.io.IOException
- if reading failspublic FramedSnappyCompressorInputStream(java.io.InputStream in, int blockSize, FramedSnappyDialect dialect) throws java.io.IOException
in
- the InputStream from which to read the compressed datablockSize
- the block size to use for the compressed streamdialect
- the dialect used by the compressed streamjava.io.IOException
- if reading failspublic int read() throws java.io.IOException
read
in class java.io.InputStream
java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.io.InputStream
java.io.IOException
public int read(byte[] b, int off, int len) throws java.io.IOException
read
in class java.io.InputStream
java.io.IOException
public int available() throws java.io.IOException
available
in class java.io.InputStream
java.io.IOException
public long getCompressedCount()
getCompressedCount
in interface InputStreamStatistics
private int readOnce(byte[] b, int off, int len) throws java.io.IOException
java.io.IOException
private void readNextBlock() throws java.io.IOException
java.io.IOException
private long readCrc() throws java.io.IOException
java.io.IOException
static long unmask(long x)
private int readSize() throws java.io.IOException
java.io.IOException
private void skipBlock() throws java.io.IOException
java.io.IOException
private void readStreamIdentifier() throws java.io.IOException
java.io.IOException
private int readOneByte() throws java.io.IOException
java.io.IOException
private void verifyLastChecksumAndReset() throws java.io.IOException
java.io.IOException
public static boolean matches(byte[] signature, int length)
.sz files start with a chunk with tag 0xff and content sNaPpY.
signature
- the bytes to checklength
- the number of bytes to check