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