/* */ #include "Metalink2RequestGroup.h" #include #include "RequestGroup.h" #include "Option.h" #include "LogFactory.h" #include "Logger.h" #include "prefs.h" #include "Util.h" #include "message.h" #include "DownloadContext.h" #include "MetalinkHelper.h" #include "BinaryStream.h" #include "MemoryBufferPreDownloadHandler.h" #include "TrueRequestGroupCriteria.h" #include "MetalinkEntry.h" #include "MetalinkResource.h" #include "FileEntry.h" #include "A2STR.h" #include "a2functional.h" #ifdef ENABLE_BITTORRENT # include "BtDependency.h" #endif // ENABLE_BITTORRENT #ifdef ENABLE_MESSAGE_DIGEST # include "Checksum.h" # include "ChunkChecksum.h" #endif // ENABLE_MESSAGE_DIGEST namespace aria2 { Metalink2RequestGroup::Metalink2RequestGroup(): _logger(LogFactory::getInstance()) {} class AccumulateNonP2PUrl { private: std::deque& urlsPtr; public: AccumulateNonP2PUrl(std::deque& urlsPtr) :urlsPtr(urlsPtr) {} void operator()(const SharedHandle& resource) { switch(resource->type) { case MetalinkResource::TYPE_HTTP: case MetalinkResource::TYPE_HTTPS: case MetalinkResource::TYPE_FTP: urlsPtr.push_back(resource->url); break; default: break; } } }; class FindBitTorrentUrl { public: FindBitTorrentUrl() {} bool operator()(const SharedHandle& resource) { if(resource->type == MetalinkResource::TYPE_BITTORRENT) { return true; } else { return false; } } }; void Metalink2RequestGroup::generate(std::deque >& groups, const std::string& metalinkFile, const SharedHandle