]> git.saurik.com Git - redis.git/blobdiff - src/rio.c
Add checksum computation to rio.c
[redis.git] / src / rio.c
index 5a745840609a9e2363d4eb0ad1e7bf4c011e1ff2..bb977c740cc7a22272a02f4347e783402a4449d4 100644 (file)
--- a/src/rio.c
+++ b/src/rio.c
@@ -58,6 +58,8 @@ static const rio rioBufferIO = {
     rioBufferRead,
     rioBufferWrite,
     rioBufferTell,
+    NULL,           /* update_checksum */
+    0,              /* current checksum */
     { { NULL, 0 } } /* union for io-specific vars */
 };
 
@@ -65,6 +67,8 @@ static const rio rioFileIO = {
     rioFileRead,
     rioFileWrite,
     rioFileTell,
+    NULL,           /* update_checksum */
+    0,              /* current checksum */
     { { NULL, 0 } } /* union for io-specific vars */
 };
 
@@ -79,6 +83,12 @@ void rioInitWithBuffer(rio *r, sds s) {
     r->io.buffer.pos = 0;
 }
 
+/* This function can be installed both in memory and file streams when checksum
+ * computation is needed. */
+void rioGenericUpdateChecksum(rio *r, const void *buf, size_t len) {
+    r->checksum = crc64(r->checksum,buf,len);
+}
+
 /* ------------------------------ Higher level interface ---------------------------
  * The following higher level functions use lower level rio.c functions to help
  * generating the Redis protocol for the Append Only File. */