]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commit
immutable: refactor download to do only download-and-decode, not decryption
authorZooko O'Whielacronx <zooko@zooko.com>
Thu, 8 Jan 2009 18:53:49 +0000 (11:53 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Thu, 8 Jan 2009 18:53:49 +0000 (11:53 -0700)
commit600196f57143911e8f832b06747ac9a8dc17cb91
tree86aafb12d142a6e0cac824ca421dd8d0b7b24d0a
parent9bba57877620c0b86d3ac6bbe97acf95d6254d03
immutable: refactor download to do only download-and-decode, not decryption
FileDownloader takes a verify cap and produces ciphertext, instead of taking a read cap and producing plaintext.
FileDownloader does all integrity checking including the mandatory ciphertext hash tree and the optional ciphertext flat hash, rather than expecting its target to do some of that checking.
Rename immutable.download.Output to immutable.download.DecryptingOutput. An instance of DecryptingOutput can be passed to FileDownloader to use as the latter's target.  Text pushed to the DecryptingOutput is decrypted and then pushed to *its* target.
DecryptingOutput satisfies the IConsumer interface, and if its target also satisfies IConsumer, then it forwards and pause/unpause signals to its producer (which is the FileDownloader).
This patch also changes some logging code to use the new logging mixin class.
Check integrity of a segment and decrypt the segment one block-sized buffer at a time instead of copying the buffers together into one segment-sized buffer (reduces peak memory usage, I think, and is probably a tad faster/less CPU, depending on your encoding parameters).
Refactor FileDownloader so that processing of segments and of tail-segment share as much code is possible.
FileDownloader and FileNode take caps as instances of URI (Python objects), not as strings.
src/allmydata/client.py
src/allmydata/immutable/download.py
src/allmydata/immutable/filenode.py
src/allmydata/test/test_encode.py
src/allmydata/test/test_filenode.py