/* */ #ifndef D_CHECK_INTEGRITY_ENTRY_H #define D_CHECK_INTEGRITY_ENTRY_H #include "RequestGroupEntry.h" #include #include #include "ProgressAwareEntry.h" namespace aria2 { class IteratableValidator; class DownloadEngine; class FileAllocationEntry; class CheckIntegrityEntry : public RequestGroupEntry, public ProgressAwareEntry { private: std::unique_ptr validator_; protected: void setValidator(std::unique_ptr validator); void proceedFileAllocation(std::vector>& commands, std::unique_ptr entry, DownloadEngine* e); public: CheckIntegrityEntry( RequestGroup* requestGroup, std::unique_ptr nextCommand = std::unique_ptr()); virtual ~CheckIntegrityEntry(); virtual int64_t getTotalLength() CXX11_OVERRIDE; virtual int64_t getCurrentLength() CXX11_OVERRIDE; virtual void validateChunk(); virtual bool finished() CXX11_OVERRIDE; virtual bool isValidationReady() = 0; virtual void initValidator() = 0; virtual void onDownloadFinished(std::vector>& commands, DownloadEngine* e) = 0; virtual void onDownloadIncomplete(std::vector>& commands, DownloadEngine* e) = 0; void cutTrailingGarbage(); }; } // namespace aria2 #endif // D_CHECK_INTEGRITY_ENTRY_H