/* */ #include "MetalinkEntry.h" #include "Util.h" #include MetalinkEntry::MetalinkEntry() {} MetalinkEntry::~MetalinkEntry() { for_each(resources.begin(), resources.end(), Deleter()); } class PrefOrder { public: bool operator()(const MetalinkResource* res1, const MetalinkResource* res2) { return res1->preference > res2->preference; } }; void MetalinkEntry::reorderResourcesByPreference() { random_shuffle(resources.begin(), resources.end()); sort(resources.begin(), resources.end(), PrefOrder()); } class Supported { public: bool operator()(const MetalinkResource* res) { switch(res->type) { case MetalinkResource::TYPE_FTP: case MetalinkResource::TYPE_HTTP: case MetalinkResource::TYPE_HTTPS: #ifdef ENABLE_BITTORRENT case MetalinkResource::TYPE_BITTORRENT: #endif // ENABLE_BITTORRENT return true; default: return false; } } }; void MetalinkEntry::dropUnsupportedResource() { MetalinkResources::iterator split = partition(resources.begin(), resources.end(), Supported()); for_each(split, resources.end(), Deleter()); resources.erase(split, resources.end()); }