2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Change the number of retries for tracker request based on the
	number of available tracker in a torrent file.
	* src/TrackerWatcherCommand.cc
pull/1/head
Tatsuhiro Tsujikawa 2009-02-01 03:24:02 +00:00
parent 1b26827851
commit 746c187ae8
2 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Change the number of retries for tracker request based on the
number of available tracker in a torrent file.
* src/TrackerWatcherCommand.cc
2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added _maxTries property to RequestGroup and assign the option

View File

@ -58,6 +58,7 @@
#include "A2STR.h"
#include "SocketCore.h"
#include "Request.h"
#include "AnnounceTier.h"
namespace aria2 {
@ -178,12 +179,37 @@ RequestGroupHandle TrackerWatcherCommand::createAnnounce() {
return rg;
}
static bool backupTrackerIsAvailable
(const std::deque<SharedHandle<AnnounceTier> >& announceTiers)
{
if(announceTiers.size() >= 2) {
return true;
}
if(announceTiers.empty()) {
return false;
}
if(announceTiers[0]->urls.size() >= 2) {
return true;
} else {
return false;
}
}
RequestGroupHandle
TrackerWatcherCommand::createRequestGroup(const std::string& uri)
{
std::deque<std::string> uris;
uris.push_back(uri);
RequestGroupHandle rg(new RequestGroup(e->option, uris));
// If backup tracker is available, only try 2 times for each tracker
// and if they all fails, then try next one.
if(backupTrackerIsAvailable(_btContext->getAnnounceTiers())) {
logger->debug("This is multi-tracker announce.");
rg->setMaxTries(2);
} else {
logger->debug("This is single-tracker announce.");
rg->setMaxTries(5);
}
static const std::string TRACKER_ANNOUNCE_FILE("[tracker.announce]");
SingleFileDownloadContextHandle dctx