/* */ #ifndef _D_CHUNK_CHECKSUM_H_ #define _D_CHUNK_CHECKSUM_H_ #include "common.h" #include "SharedHandle.h" #include "A2STR.h" #include #include namespace aria2 { class ChunkChecksum { private: std::string _algo; std::deque _checksums; size_t _checksumLength; public: ChunkChecksum():_checksumLength(0) {} ChunkChecksum(const std::string& algo, const std::deque& checksums, size_t checksumLength): _algo(algo), _checksums(checksums), _checksumLength(checksumLength) {} bool validateChunk(const std::string& actualChecksum, size_t checksumIndex) const { if(checksumIndex < _checksums.size()) { return actualChecksum == getChecksum(checksumIndex); } else { return false; } } uint64_t getEstimatedDataLength() const { return ((uint64_t)_checksumLength)*_checksums.size(); } size_t countChecksum() const { return _checksums.size(); } const std::string& getChecksum(size_t index) const { if(index < _checksums.size()) { return _checksums[index]; } else { return A2STR::NIL; } } const std::deque& getChecksums() const { return _checksums; } size_t getChecksumLength() const { return _checksumLength; } const std::string& getAlgo() const { return _algo; } void setAlgo(const std::string& algo) { _algo = algo; } void setChecksumLength(size_t length) { _checksumLength = length; } void setChecksums(const std::deque& mds) { _checksums = mds; } }; } // namespace aria2 #endif // _D_CHUNK_CHECKSUM_H_