diff options
Diffstat (limited to 'src/UTMetadataPostDownloadHandler.cc')
| -rw-r--r-- | src/UTMetadataPostDownloadHandler.cc | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/UTMetadataPostDownloadHandler.cc b/src/UTMetadataPostDownloadHandler.cc index 3d48f135..f66d9adb 100644 --- a/src/UTMetadataPostDownloadHandler.cc +++ b/src/UTMetadataPostDownloadHandler.cc @@ -55,14 +55,13 @@ namespace aria2 { namespace { -class Criteria:public RequestGroupCriteria -{ +class Criteria : public RequestGroupCriteria { public: virtual bool match(const RequestGroup* requestGroup) const CXX11_OVERRIDE { auto& dctx = requestGroup->getDownloadContext(); - if(dctx->hasAttribute(CTX_ATTR_BT)) { - if(bittorrent::getTorrentAttrs(dctx)->metadata.empty()) { + if (dctx->hasAttribute(CTX_ATTR_BT)) { + if (bittorrent::getTorrentAttrs(dctx)->metadata.empty()) { return true; } } @@ -76,44 +75,47 @@ UTMetadataPostDownloadHandler::UTMetadataPostDownloadHandler() setCriteria(make_unique<Criteria>()); } -void UTMetadataPostDownloadHandler::getNextRequestGroups -(std::vector<std::shared_ptr<RequestGroup> >& groups, - RequestGroup* requestGroup) const +void UTMetadataPostDownloadHandler::getNextRequestGroups( + std::vector<std::shared_ptr<RequestGroup>>& groups, + RequestGroup* requestGroup) const { - auto& dctx =requestGroup->getDownloadContext(); + auto& dctx = requestGroup->getDownloadContext(); auto attrs = bittorrent::getTorrentAttrs(dctx); std::string metadata = - util::toString(requestGroup->getPieceStorage()->getDiskAdaptor()); + util::toString(requestGroup->getPieceStorage()->getDiskAdaptor()); std::string torrent = bittorrent::metadata2Torrent(metadata, attrs); - if(requestGroup->getOption()->getAsBool(PREF_BT_SAVE_METADATA)) { + if (requestGroup->getOption()->getAsBool(PREF_BT_SAVE_METADATA)) { std::string filename = - util::applyDir(requestGroup->getOption()->get(PREF_DIR), - util::toHex(attrs->infoHash)+".torrent"); - if(util::saveAs(filename, torrent)) { + util::applyDir(requestGroup->getOption()->get(PREF_DIR), + util::toHex(attrs->infoHash) + ".torrent"); + if (util::saveAs(filename, torrent)) { A2_LOG_NOTICE(fmt(MSG_METADATA_SAVED, filename.c_str())); - } else { + } + else { A2_LOG_NOTICE(fmt(MSG_METADATA_NOT_SAVED, filename.c_str())); } } - if(!requestGroup->getOption()->getAsBool(PREF_BT_METADATA_ONLY)) { + if (!requestGroup->getOption()->getAsBool(PREF_BT_METADATA_ONLY)) { std::vector<std::shared_ptr<RequestGroup>> newRgs; // Don't adjust announce URI because it has been done when // RequestGroup is created with magnet URI. createRequestGroupForBitTorrent(newRgs, requestGroup->getOption(), - std::vector<std::string>(), - A2STR::NIL, torrent, false); + std::vector<std::string>(), A2STR::NIL, + torrent, false); requestGroup->followedBy(newRgs.begin(), newRgs.end()); - if(requestGroup->getMetadataInfo()) { + for (auto& rg : newRgs) { + rg->following(requestGroup->getGID()); + } + if (requestGroup->getMetadataInfo()) { setMetadataInfo(newRgs.begin(), newRgs.end(), requestGroup->getMetadataInfo()); } - auto rgman = requestGroup->getRequestGroupMan(); - if(rgman && rgman->getKeepRunning() && - requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) { - for(auto& rg : newRgs) { + if (rgman && rgman->getKeepRunning() && + requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) { + for (auto& rg : newRgs) { rg->setPauseRequested(true); } } |
