void Client::on(DirectoryListingManagerListener::OpenListing, const DirectoryListingPtr& aList, const string& aDir, const string& aXML) noexcept { if (aList->getPartialList()) { aList->addPartialListTask(aXML, aDir, false); } else { aList->addFullListTask(aDir); } }
void DirectoryListingManager::on(QueueManagerListener::PartialListFinished, const HintedUser& aUser, const string& aXML, const string& aBase) noexcept { if (aXML.empty()) return; DirectoryListingPtr dl; { RLock l(cs); auto p = viewedLists.find(aUser.user); if (p != viewedLists.end() && p->second->getPartialList()) { dl = p->second; } else { return; } } if (dl->hasCompletedDownloads()) { dl->addHubUrlChangeTask(aUser.hint); dl->addPartialListTask(aXML, aBase, false, true, [=] { dl->setActive(); }); } else { fire(DirectoryListingManagerListener::OpenListing(), dl, aBase, aXML); } }