/* */ #ifndef _D_DOWNLOAD_CONTEXT_H_ #define _D_DOWNLOAD_CONTEXT_H_ #include "common.h" #include "SharedHandle.h" #include #include namespace aria2 { class FileEntry; class DownloadContext { protected: std::string _dir; public: DownloadContext():_dir(".") {} virtual ~DownloadContext() {} enum FILE_MODE { SINGLE, MULTI }; virtual std::string getPieceHash(int32_t index) const = 0; virtual const std::deque& getPieceHashes() const = 0; virtual int64_t getTotalLength() const = 0; virtual FILE_MODE getFileMode() const = 0; virtual std::deque > getFileEntries() const = 0; virtual std::string getName() const = 0; virtual int32_t getPieceLength() const = 0; virtual int32_t getNumPieces() const = 0; virtual std::string getPieceHashAlgo() const = 0; /** * Returns an actual file path. * If this contains a single file entry, then returns its file path, * for example, "/tmp/downloads/aria2.txt" * If this contains multiple file entries(i,e /tmp/downloads/aria2.txt, * /tmp/downloads/aria2.bin), then returns its base dir path, * for example, "/tmp/downloads" */ virtual std::string getActualBasePath() const = 0; std::string getDir() const { return _dir; } void setDir(const std::string& dir) { _dir = dir; } }; typedef SharedHandle DownloadContextHandle; } // namespace aria2 #endif // _D_DOWNLOAD_CONTEXT_H_