/* */ #ifndef _D_DOWNLOAD_CONTEXT_H_ #define _D_DOWNLOAD_CONTEXT_H_ #include "common.h" #include #include #include "SharedHandle.h" #include "Signature.h" #include "TimeA2.h" namespace aria2 { class FileEntry; class DownloadContext { protected: std::string _dir; private: Time _downloadStartTime; Time _downloadStopTime; SharedHandle _signature; public: DownloadContext(); virtual ~DownloadContext(); enum FILE_MODE { SINGLE, MULTI }; virtual const std::string& getPieceHash(size_t index) const = 0; virtual const std::deque& getPieceHashes() const = 0; virtual uint64_t getTotalLength() const = 0; virtual bool knowsTotalLength() const = 0; virtual FILE_MODE getFileMode() const = 0; virtual std::deque > getFileEntries() const = 0; virtual size_t getPieceLength() const = 0; virtual size_t getNumPieces() const = 0; virtual const 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; const std::string& getDir() const { return _dir; } void setDir(const std::string& dir); SharedHandle getSignature() const; void setSignature(const SharedHandle& signature); void resetDownloadStartTime(); void resetDownloadStopTime(); int64_t calculateSessionTime() const; }; typedef SharedHandle DownloadContextHandle; } // namespace aria2 #endif // _D_DOWNLOAD_CONTEXT_H_