/* */ #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 "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" #include "Signature.h" #include "download_handlers.h" #include "RequestGroupCriteria.h" #ifdef ENABLE_BITTORRENT #include "BtDependency.h" #include "download_helper.h" #endif // ENABLE_BITTORRENT #include "Checksum.h" #include "ChunkChecksum.h" namespace aria2 { Metalink2RequestGroup::Metalink2RequestGroup() {} namespace { class AccumulateNonP2PUri { private: std::vector& urisPtr; public: AccumulateNonP2PUri(std::vector& urisPtr) : urisPtr(urisPtr) {} void operator()(const std::unique_ptr& 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 std::shared_ptr& resource) { if (resource->type == MetalinkResource::TYPE_BITTORRENT) { return true; } else { return false; } } }; } // namespace void Metalink2RequestGroup::generate( std::vector>& groups, const std::string& metalinkFile, const std::shared_ptr