/* */ #ifndef _D_CHUNK_CHECKSUM_H_ #define _D_CHUNK_CHECKSUM_H_ #include "common.h" #include "messageDigest.h" class ChunkChecksum { private: string _algo; Strings _checksums; int32_t _checksumLength; public: ChunkChecksum(const string& algo, const Strings& checksums, int32_t checksumLength): _algo(algo), _checksums(checksums), _checksumLength(checksumLength) {} bool validateChunk(const 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(); } string getChecksum(int32_t index) const { if(index < (int32_t)_checksums.size()) { return _checksums[index]; } else { return ""; } } int32_t getChecksumLength() const { return _checksumLength; } const string& getAlgo() const { return _algo; } }; typedef SharedHandle ChunkChecksumHandle; #endif // _D_CHUNK_CHECKSUM_H_