/* */ #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 "metalink_helper.h" #include "BinaryStream.h" #include "MemoryBufferPreDownloadHandler.h" #include "TrueRequestGroupCriteria.h" #include "MetalinkEntry.h" #include "MetalinkResource.h" #include "MetalinkMetaurl.h" #include "FileEntry.h" #include "A2STR.h" #include "a2functional.h" #include "download_helper.h" #include "fmt.h" #include "SegList.h" #include "DownloadFailureException.h" #ifdef ENABLE_BITTORRENT # include "BtDependency.h" # include "download_helper.h" #endif // ENABLE_BITTORRENT #ifdef ENABLE_MESSAGE_DIGEST # include "Checksum.h" # include "ChunkChecksum.h" #endif // ENABLE_MESSAGE_DIGEST namespace aria2 { Metalink2RequestGroup::Metalink2RequestGroup() {} namespace { class AccumulateNonP2PUri { private: std::vector& urisPtr; public: AccumulateNonP2PUri(std::vector& urisPtr) :urisPtr(urisPtr) {} void operator()(const SharedHandle& resource) { switch(resource->type) { case MetalinkResource::TYPE_HTTP: case MetalinkResource::TYPE_HTTPS: case MetalinkResource::TYPE_FTP: urisPtr.push_back(resource->url); break; default: break; } } }; } // namespace namespace { class FindBitTorrentUri { public: FindBitTorrentUri() {} bool operator()(const SharedHandle& resource) { if(resource->type == MetalinkResource::TYPE_BITTORRENT) { return true; } else { return false; } } }; } // namespace void Metalink2RequestGroup::generate (std::vector >& groups, const std::string& metalinkFile, const SharedHandle