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