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