summaryrefslogtreecommitdiff
path: root/src/IteratableChunkChecksumValidator.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-11-12 11:28:16 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-11-12 11:28:16 +0000
commit7c41d11be325a2f85108a28a2111353ad0e208b4 (patch)
tree9b5909898bc7ecdaaf7cd2b0ff170334d05442c9 /src/IteratableChunkChecksumValidator.h
parent4f59dc84bfa4be6e5fcea98b5f8775ddf7764dfa (diff)
2007-11-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Implemented checksum validation feature(1 checksum for each file) The validation takes place after the download. * src/PieceHashCheckIntegrityEntry.{h, cc}: New class. * src/IteratableChecksumValidator.{h, cc}: Rewritten. * src/CheckIntegrityCommand.cc: Changed log message. * src/Metalink2RequestGroup.cc: Set checksum to SingleFileDownloadContext. * src/StreamCheckIntegrityEntry.{h, cc}: Now derived from PieceHashCheckIntegrity class. * src/BtCheckIntegrityEntry.{h, cc}: Now derived from PieceHashCheckIntegrity class. * src/ChecksumCheckIntegrityEntry.{h, cc}: New class. * src/IteratableValidator.h: New class. * src/message.h * src/CheckIntegrityEntry.{h, cc} * src/IteratableChunkChecksumValidator.{h, cc} * src/SingleFileDownloadContext.h * src/DownloadCommand.cc --allow-overwrite=true is no longer needed to check file integrity before download in BitTorrent download. * src/RequestGroup.cc (getInitialCommand) Removed RequestGroup from queue when RequestGroup::getInitialCommand() throws exception. * src/RequestGroupMan.cc (getInitialCommands)
Diffstat (limited to 'src/IteratableChunkChecksumValidator.h')
-rw-r--r--src/IteratableChunkChecksumValidator.h43
1 files changed, 16 insertions, 27 deletions
diff --git a/src/IteratableChunkChecksumValidator.h b/src/IteratableChunkChecksumValidator.h
index 75c2b2e1..3150f7a3 100644
--- a/src/IteratableChunkChecksumValidator.h
+++ b/src/IteratableChunkChecksumValidator.h
@@ -35,13 +35,16 @@
#ifndef _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_
#define _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_
-#include "common.h"
-#include "DownloadContext.h"
-#include "PieceStorage.h"
-#include "BitfieldMan.h"
-#include "LogFactory.h"
+#include "IteratableValidator.h"
-class IteratableChunkChecksumValidator
+class DownloadContext;
+extern typedef SharedHandle<DownloadContext> DownloadContextHandle;
+class PieceStorage;
+extern typedef SharedHandle<PieceStorage> PieceStorageHandle;
+class BitfieldMan;
+class Logger;
+
+class IteratableChunkChecksumValidator:public IteratableValidator
{
private:
DownloadContextHandle _dctx;
@@ -53,33 +56,19 @@ private:
string calculateActualChecksum();
public:
IteratableChunkChecksumValidator(const DownloadContextHandle& dctx,
- const PieceStorageHandle& pieceStorage):
- _dctx(dctx),
- _pieceStorage(pieceStorage),
- _bitfield(new BitfieldMan(_dctx->getPieceLength(), _dctx->getTotalLength())),
- _currentIndex(0),
- _logger(LogFactory::getInstance()) {}
+ const PieceStorageHandle& pieceStorage);
- void init();
+ virtual ~IteratableChunkChecksumValidator();
- void validateChunk();
+ virtual void init();
- bool finished() const
- {
- return _currentIndex >= (uint32_t)_dctx->getNumPieces();
- }
+ virtual void validateChunk();
- int64_t getCurrentOffset() const
- {
- return ((int64_t)_currentIndex)*_dctx->getPieceLength();
- }
+ virtual bool finished() const;
- int64_t getTotalLength() const
- {
- return _dctx->getTotalLength();
- }
+ virtual int64_t getCurrentOffset() const;
- void updatePieceStorage();
+ virtual int64_t getTotalLength() const;
};
typedef SharedHandle<IteratableChunkChecksumValidator> IteratableChunkChecksumValidatorHandle;