/* */ #ifndef _D_DISK_ADAPTOR_H_ #define _D_DISK_ADAPTOR_H_ #include "BinaryStream.h" #include #include namespace aria2 { class FileEntry; class Logger; class FileAllocationIterator; class DiskAdaptor:public BinaryStream { protected: std::string storeDir; std::deque > fileEntries; const Logger* logger; public: DiskAdaptor(); virtual ~DiskAdaptor(); virtual void openFile() = 0; virtual void closeFile() = 0; virtual void openExistingFile() = 0; virtual void initAndOpenFile() = 0; virtual void onDownloadComplete() = 0; virtual bool fileExists() = 0; virtual std::string getFilePath() = 0; virtual uint64_t size() const = 0; // optional behavior virtual void truncate(uint64_t length) {} void setFileEntries(const std::deque >& fileEntries); SharedHandle getFileEntryFromPath(const std::string& fileEntryPath) const; const std::deque >& getFileEntries() const; bool addDownloadEntry(const std::string& fileEntryPath); bool addDownloadEntry(size_t index); void addAllDownloadEntry(); void removeAllDownloadEntry(); void setStoreDir(const std::string& storeDir) { this->storeDir = storeDir; } const std::string& getStoreDir() const { return this->storeDir; } virtual SharedHandle fileAllocationIterator() = 0; virtual void enableDirectIO() {} virtual void disableDirectIO() {} }; typedef SharedHandle DiskAdaptorHandle; } // namespace aria2 #endif // _D_DISK_ADAPTOR_H_