/* */ #ifndef D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H #define D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H #include "IteratableValidator.h" #include #include "SharedHandle.h" namespace aria2 { class DownloadContext; class PieceStorage; class BitfieldMan; class MessageDigest; class IteratableChunkChecksumValidator:public IteratableValidator { private: SharedHandle dctx_; SharedHandle pieceStorage_; SharedHandle bitfield_; size_t currentIndex_; SharedHandle ctx_; std::string calculateActualChecksum(); std::string digest(int64_t offset, size_t length); public: IteratableChunkChecksumValidator(const SharedHandle& dctx, const SharedHandle& pieceStorage); virtual ~IteratableChunkChecksumValidator(); virtual void init(); virtual void validateChunk(); virtual bool finished() const; virtual int64_t getCurrentOffset() const; virtual int64_t getTotalLength() const; }; } // namespace aria2 #endif // D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H