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();
+    }
+}

Reply via email to