/* */ #include "MetalinkPostDownloadHandler.h" #include "RequestGroup.h" #include "Metalink2RequestGroup.h" #include "Logger.h" #include "DiskAdaptor.h" #include "PieceStorage.h" #include "DownloadHandlerConstants.h" #include "ContentTypeRequestGroupCriteria.h" #include "Exception.h" namespace aria2 { MetalinkPostDownloadHandler::MetalinkPostDownloadHandler() { SharedHandle cri (new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getMetalinkContentTypes(), DownloadHandlerConstants::getMetalinkExtensions())); setCriteria(cri); } MetalinkPostDownloadHandler::~MetalinkPostDownloadHandler() {} std::deque > MetalinkPostDownloadHandler::getNextRequestGroups(RequestGroup* requestGroup) { const Option* op = requestGroup->getOption(); _logger->debug("Generating RequestGroups for Metalink file %s", requestGroup->getFilePath().c_str()); SharedHandle diskAdaptor = requestGroup->getPieceStorage()->getDiskAdaptor(); try { diskAdaptor->openExistingFile(); std::deque > rgs = Metalink2RequestGroup(op).generate(diskAdaptor); diskAdaptor->closeFile(); return rgs; } catch(Exception* e) { diskAdaptor->closeFile(); throw; } } } // namespace aria2