Add checksum computation to rio.c

This commit is contained in:
antirez
2012-04-09 12:33:09 +02:00
parent 88c1d9550d
commit 736b7c3f04
3 changed files with 43 additions and 4 deletions

View File

@ -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. */