/* */ #ifndef _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_ #define _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_ #include "IteratableValidator.h" namespace aria2 { class DownloadContext; class PieceStorage; class BitfieldMan; class Logger; class MessageDigestContext; class IteratableChunkChecksumValidator:public IteratableValidator { private: SharedHandle _dctx; SharedHandle _pieceStorage; BitfieldMan* _bitfield; size_t _currentIndex; Logger* _logger; SharedHandle _ctx; unsigned char* _buffer; std::string calculateActualChecksum(); std::string digest(off_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 off_t getCurrentOffset() const; virtual uint64_t getTotalLength() const; }; typedef SharedHandle IteratableChunkChecksumValidatorHandle; } // namespace aria2 #endif // _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_