/* */ #ifndef _D_ITERATABLE_CHECKSUM_VALIDATOR_H_ #define _D_ITERATABLE_CHECKSUM_VALIDATOR_H_ #include "common.h" #include "BitfieldMan.h" #include "Checksum.h" #include "DiskWriter.h" #include "LogFactory.h" #include "messageDigest.h" class IteratableChecksumValidator { private: DiskWriterHandle _diskWriter; BitfieldMan* _bitfield; int64_t _currentOffset; ChecksumHandle _checksum; const Logger* logger; MessageDigestContextHandle _ctx; string calculateActualChecksum(); public: IteratableChecksumValidator():_diskWriter(0), _bitfield(0), _currentOffset(0), _checksum(0), logger(LogFactory::getInstance()), _ctx(0) {} bool canValidate() const; void init(); void validateChunk(); bool finished() const { return _currentOffset >= _bitfield->getTotalLength(); } void setDiskWriter(const DiskWriterHandle& diskWriter) { _diskWriter = diskWriter; } void setBitfield(BitfieldMan* bitfield) { _bitfield = bitfield; } void setChecksum(const ChecksumHandle& checksum) { _checksum = checksum; } int64_t getCurrentOffset() const { return _currentOffset; } }; typedef SharedHandle IteratableChecksumValidatorHandle; #endif // _D_ITERATABLE_CHECKSUM_VALIDATOR_H_