Class CompressedInputStream
java.lang.Object
java.io.InputStream
org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus
org.apache.cassandra.io.util.RebufferingInputStream
org.apache.cassandra.db.streaming.CompressedInputStream
- All Implemented Interfaces:
Closeable,DataInput,AutoCloseable,DataInputPlus
InputStream which reads compressed chunks from the underlying input stream and deals with decompression
and position tracking.
The underlying input will be an instance of
RebufferingInputStream except in some unit tests.
Compressed chunks transferred will be a subset of all chunks in the source streamed sstable - just enough to
deserialize the requested partition position ranges. Correctness of the entire operation depends on provided
partition position ranges and compressed chunks properly matching, and there is no way on the receiving side to
verify if that's the case, which arguably makes this a little brittle.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.cassandra.io.util.DataInputPlus
DataInputPlus.DataInputStreamPlus -
Field Summary
Fields inherited from class org.apache.cassandra.io.util.RebufferingInputStream
buffer -
Constructor Summary
ConstructorsConstructorDescriptionCompressedInputStream(DataInputPlus input, CompressionInfo compressionInfo, ChecksumType checksumType, DoubleSupplier validateChecksumChance) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()voidposition(long position) Invoked when crossing into the nextSSTableReader.PartitionPositionBoundssection inCassandraCompressedStreamReader.read(DataInputPlus).protected voidreBuffer()Implementations must implement this method to refill the buffer.Methods inherited from class org.apache.cassandra.io.util.RebufferingInputStream
read, read, readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readFully, readInt, readLine, readLong, readPrimitiveSlowly, readShort, readUnsignedByte, readUnsignedShort, readUnsignedVInt, readUnsignedVInt32, readUTF, readVInt, readVInt32, skipBytesMethods inherited from class java.io.InputStream
available, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferToMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.cassandra.io.util.DataInputPlus
skipBytesFully
-
Constructor Details
-
CompressedInputStream
public CompressedInputStream(DataInputPlus input, CompressionInfo compressionInfo, ChecksumType checksumType, DoubleSupplier validateChecksumChance) - Parameters:
input- Input input to read compressed data fromcompressionInfo- Compression info
-
-
Method Details
-
position
Invoked when crossing into the nextSSTableReader.PartitionPositionBoundssection inCassandraCompressedStreamReader.read(DataInputPlus). Will skip 1..n compressed chunks of the original sstable.- Throws:
IOException
-
reBuffer
Description copied from class:RebufferingInputStreamImplementations must implement this method to refill the buffer. They can expect the buffer to be empty when this method is invoked.- Specified by:
reBufferin classRebufferingInputStream- Throws:
IOException
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classInputStream
-