Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 9405ce0e2 -> 2e00ba8bf refs/heads/trunk 9b1232929 -> 50afb7915
add ChecksummedSequentialWriter Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e00ba8b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e00ba8b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e00ba8b Branch: refs/heads/cassandra-2.1 Commit: 2e00ba8bfebfa196283b9abbec73d2edd49af541 Parents: 9405ce0 Author: Jonathan Ellis <[email protected]> Authored: Wed Mar 12 10:29:42 2014 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Wed Mar 12 10:29:42 2014 -0500 ---------------------------------------------------------------------- .../io/util/ChecksummedSequentialWriter.java | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e00ba8b/src/java/org/apache/cassandra/io/util/ChecksummedSequentialWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/util/ChecksummedSequentialWriter.java b/src/java/org/apache/cassandra/io/util/ChecksummedSequentialWriter.java new file mode 100644 index 0000000..3c4c257 --- /dev/null +++ b/src/java/org/apache/cassandra/io/util/ChecksummedSequentialWriter.java @@ -0,0 +1,36 @@ +package org.apache.cassandra.io.util; + +import java.io.File; + +import org.apache.cassandra.io.sstable.Descriptor; + +public class ChecksummedSequentialWriter extends SequentialWriter +{ + private final SequentialWriter crcWriter; + private final DataIntegrityMetadata.ChecksumWriter crcMetadata; + + public ChecksummedSequentialWriter(File file, int bufferSize, boolean skipIOCache, File crcPath) + { + super(file, bufferSize, skipIOCache); + crcWriter = new SequentialWriter(crcPath, 8 * 1024, true); + crcMetadata = new DataIntegrityMetadata.ChecksumWriter(crcWriter.stream); + crcMetadata.writeChunkSize(buffer.length); + } + + protected void flushData() + { + super.flushData(); + crcMetadata.append(buffer, 0, validBufferBytes); + } + + public void writeFullChecksum(Descriptor descriptor) + { + crcMetadata.writeFullChecksum(descriptor); + } + + public void close() + { + super.close(); + crcWriter.close(); + } +}
