/* */ #ifndef _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_ #define _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_ #include "IteratableValidator.h" class DownloadContext; typedef SharedHandle DownloadContextHandle; class PieceStorage; typedef SharedHandle PieceStorageHandle; class BitfieldMan; class Logger; class MessageDigestContext; typedef SharedHandle MessageDigestContextHandle; class IteratableChunkChecksumValidator:public IteratableValidator { private: DownloadContextHandle _dctx; PieceStorageHandle _pieceStorage; BitfieldMan* _bitfield; uint32_t _currentIndex; const Logger* _logger; MessageDigestContextHandle _ctx; unsigned char* _buffer; string calculateActualChecksum(); string digest(int64_t offset, int32_t length); public: IteratableChunkChecksumValidator(const DownloadContextHandle& dctx, const PieceStorageHandle& pieceStorage); virtual ~IteratableChunkChecksumValidator(); virtual void init(); virtual void validateChunk(); virtual bool finished() const; virtual int64_t getCurrentOffset() const; virtual int64_t getTotalLength() const; }; typedef SharedHandle IteratableChunkChecksumValidatorHandle; #endif // _D_ITERATABLE_CHUNK_CHECKSUM_VALIDATOR_H_