/* */ #ifndef _D_REQUEST_GROUP_MAN_H_ #define _D_REQUEST_GROUP_MAN_H_ #include "common.h" #include "SharedHandle.h" #include "TransferStat.h" #include #include #include namespace aria2 { class DownloadEngine; class RequestGroup; class Command; class Logger; class DownloadResult; class RequestGroupMan { private: std::deque > _requestGroups; std::deque > _reservedGroups; std::deque > _downloadResults; const Logger* _logger; int32_t _maxSimultaneousDownloads; int32_t _gidCounter; std::string formatDownloadResult(const std::string& status, const SharedHandle& downloadResult) const; public: RequestGroupMan(const std::deque >& requestGroups, int32_t maxSimultaneousDownloads = 1); bool downloadFinished(); void save(); void closeFile(); void halt(); void forceHalt(); std::deque getInitialCommands(DownloadEngine* e); void removeStoppedGroup(); void fillRequestGroupFromReserver(DownloadEngine* e); void addRequestGroup(const SharedHandle& group); void addReservedGroup(const std::deque >& groups); void addReservedGroup(const SharedHandle& group); int32_t countRequestGroup() const; SharedHandle getRequestGroup(int32_t index) const; void showDownloadResults(std::ostream& o) const; bool isSameFileBeingDownloaded(RequestGroup* requestGroup) const; TransferStat calculateStat(); }; typedef SharedHandle RequestGroupManHandle; } // namespace aria2 #endif // _D_REQUEST_GROUP_MAN_H_