summaryrefslogtreecommitdiff
path: root/docs/api-docs/common/lib_crypto/RollingChecksum.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/api-docs/common/lib_crypto/RollingChecksum.txt')
-rw-r--r--docs/api-docs/common/lib_crypto/RollingChecksum.txt36
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/api-docs/common/lib_crypto/RollingChecksum.txt b/docs/api-docs/common/lib_crypto/RollingChecksum.txt
new file mode 100644
index 00000000..d871b3f2
--- /dev/null
+++ b/docs/api-docs/common/lib_crypto/RollingChecksum.txt
@@ -0,0 +1,36 @@
+CLASS RollingChecksum
+
+Implementing the rsync rolling checksum algorithm. Read it's description first:
+
+http://samba.anu.edu.au/rsync/tech_report/node3.html
+
+
+SUBTITLE Construction and initial checksum calculation
+
+The constructor takes a pointer to a block of data and a size, and calculates the checksum of this block. It can now be "rolled forward" to find the checksum of the block of the same size, one byte forward, with minimal calculation.
+
+
+FUNCTION RollingChecksum::GetChecksum()
+
+Returns the checksum for the current block.
+
+
+FUNCTION RollingChecksum::RollForward()
+
+This function takes the byte at the start of the current block, and the last byte of the block it's rolling forward to, and moves the checksum on.
+
+If the block is
+
+ char *pBlock = <something>;
+
+with size s, then it should be called with
+
+ RollForward(pBlock[0], pBlock[s])
+
+and now GetChecksum will return the checksum of the block (pBlock+1) of size s.
+
+
+FUNCTION RollingChecksum::RollForwardSeveral()
+
+Similar to RollForward(), but is more efficient for skipping several bytes at once. Takes pointers to the data buffer rather than the actual data values.
+