/* */ #ifndef _D_DOWNLOAD_CONTEXT_H_ #define _D_DOWNLOAD_CONTEXT_H_ #include "common.h" #include "FileEntry.h" class DownloadContext { protected: string _dir; public: DownloadContext():_dir(".") {} virtual ~DownloadContext() {} enum FILE_MODE { SINGLE, MULTI }; virtual string getPieceHash(int32_t index) const = 0; virtual const Strings& getPieceHashes() const = 0; virtual int64_t getTotalLength() const = 0; virtual FILE_MODE getFileMode() const = 0; virtual FileEntries getFileEntries() const = 0; virtual string getName() const = 0; virtual int32_t getPieceLength() const = 0; virtual int32_t getNumPieces() const = 0; virtual 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 string getActualBasePath() const = 0; string getDir() const { return _dir; } void setDir(const string& dir) { _dir = dir; } }; typedef SharedHandle DownloadContextHandle; #endif // _D_DOWNLOAD_CONTEXT_H_