/* */ #include "BtPostDownloadHandler.h" #include "prefs.h" #include "RequestGroup.h" #include "Option.h" #include "Logger.h" #include "DownloadHandlerConstants.h" #include "File.h" #include "PieceStorage.h" #include "DiskAdaptor.h" #include "util.h" #include "ContentTypeRequestGroupCriteria.h" #include "Exception.h" #include "DownloadContext.h" #include "download_helper.h" namespace aria2 { BtPostDownloadHandler::BtPostDownloadHandler() { SharedHandle cri (new ContentTypeRequestGroupCriteria (DownloadHandlerConstants::getBtContentTypes().begin(), DownloadHandlerConstants::getBtContentTypes().end(), DownloadHandlerConstants::getBtExtensions().begin(), DownloadHandlerConstants::getBtExtensions().end())); setCriteria(cri); } BtPostDownloadHandler::~BtPostDownloadHandler() {} void BtPostDownloadHandler::getNextRequestGroups (std::vector >& groups, RequestGroup* requestGroup) { _logger->info("Generating RequestGroups for Torrent file %s", requestGroup->getFirstFilePath().c_str()); std::string content; try { requestGroup->getPieceStorage()->getDiskAdaptor()->openExistingFile(); content = util::toString(requestGroup->getPieceStorage()->getDiskAdaptor()); requestGroup->getPieceStorage()->getDiskAdaptor()->closeFile(); } catch(Exception& e) { requestGroup->getPieceStorage()->getDiskAdaptor()->closeFile(); throw; } std::vector > newRgs; createRequestGroupForBitTorrent(newRgs, requestGroup->getOption(), std::vector(), content); requestGroup->followedBy(newRgs.begin(), newRgs.end()); SharedHandle mi = createMetadataInfoFromFirstFileEntry(requestGroup->getDownloadContext()); if(!mi.isNull()) { setMetadataInfo(newRgs.begin(), newRgs.end(), mi); } groups.insert(groups.end(), newRgs.begin(), newRgs.end()); } } // namespace aria2