public final class ChecksummedDataInput extends RandomAccessReader.RandomAccessReaderWithOwnChannel
RandomAccessReader
wrapper that calctulates the CRC in place.
Useful for HintsReader
, for example, where we must verify the CRC, yet don't want
to allocate an extra byte array just that purpose. The CRC can be embedded in the input stream and checked via checkCrc().
In addition to calculating the CRC, it allows to enforce a maximim known size. This is needed
so that Mutation.MutationSerializer
doesn't blow up the heap when deserializing a
corrupted sequence by reading a huge corrupted length of bytes via
via ByteBufferUtil.readWithLength(java.io.DataInput)
.Modifier and Type | Class and Description |
---|---|
static class |
ChecksummedDataInput.Builder |
RandomAccessReader.BufferedRandomAccessFileMark, RandomAccessReader.RandomAccessReaderWithOwnChannel
DataInputPlus.DataInputStreamPlus
bufferOffset, bufferSize, bufferType, channel, DEFAULT_BUFFER_SIZE, limiter, markedPointer, MAX_BUFFER_SIZE, regions
buffer
Modifier and Type | Method and Description |
---|---|
long |
bytesPastLimit() |
boolean |
checkCrc() |
void |
checkLimit(int length) |
void |
limit(long newLimit) |
static ChecksummedDataInput |
open(java.io.File file) |
int |
read(byte[] b,
int off,
int len) |
void |
readFully(byte[] b) |
void |
reBuffer()
Read data from file starting from current currentOffset to populate buffer.
|
void |
resetCrc() |
void |
resetLimit() |
close
allocateBuffer, available, bytesPastMark, bytesPastMark, bytesRemaining, current, getChannel, getFilePointer, getPath, getPosition, isEOF, length, mark, markSupported, open, readLine, reBufferMmap, reBufferStandard, releaseBuffer, reset, reset, seek, toString
read, readBoolean, readByte, readChar, readDouble, readFloat, readFully, readInt, readLong, readPrimitiveSlowly, readShort, readUnsignedByte, readUnsignedShort, readUnsignedVInt, readUTF, readVInt, skipBytes
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
readUnsignedVInt, readVInt, skipBytes, skipBytesFully
public static ChecksummedDataInput open(java.io.File file)
public void resetCrc()
public void limit(long newLimit)
public void resetLimit()
public void checkLimit(int length) throws java.io.IOException
java.io.IOException
public long bytesPastLimit()
public boolean checkCrc() throws java.io.IOException
java.io.IOException
public void readFully(byte[] b) throws java.io.IOException
readFully
in interface java.io.DataInput
readFully
in class RebufferingInputStream
java.io.IOException
public int read(byte[] b, int off, int len) throws java.io.IOException
read
in class RebufferingInputStream
java.io.IOException
public void reBuffer()
RandomAccessReader
reBuffer
in class RandomAccessReader
Copyright © 2015 The Apache Software Foundation