From fe8fea56ca586df592470d82bcec93d7bc8b27ba Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 5 Mar 2010 14:02:23 +0000 Subject: [PATCH] 2010-03-05 Tatsuhiro Tsujikawa Only execute RequestGroupMan::fillRequestGroupFromReserver() when queue maintenance is requested by RequestGroup to avoid to call the function unnecessarily. * src/FillRequestGroupCommand.cc * src/RequestGroup.cc * src/RequestGroup.h * src/RequestGroupMan.cc * src/RequestGroupMan.h --- ChangeLog | 11 +++++++++++ src/FillRequestGroupCommand.cc | 19 ++++++++++++------- src/RequestGroup.cc | 7 +++++++ src/RequestGroup.h | 8 ++++++++ src/RequestGroupMan.cc | 4 +++- src/RequestGroupMan.h | 20 ++++++++++++++++++++ 6 files changed, 61 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index c8cdf936..503e2c2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-03-05 Tatsuhiro Tsujikawa + + Only execute RequestGroupMan::fillRequestGroupFromReserver() when + queue maintenance is requested by RequestGroup to avoid to call + the function unnecessarily. + * src/FillRequestGroupCommand.cc + * src/RequestGroup.cc + * src/RequestGroup.h + * src/RequestGroupMan.cc + * src/RequestGroupMan.h + 2010-03-05 Tatsuhiro Tsujikawa Don't use hash for Peer::id. Simple concatenation of ip address diff --git a/src/FillRequestGroupCommand.cc b/src/FillRequestGroupCommand.cc index 7681c5db..13d53c7f 100644 --- a/src/FillRequestGroupCommand.cc +++ b/src/FillRequestGroupCommand.cc @@ -40,6 +40,7 @@ #include "message.h" #include "Logger.h" #include "DownloadContext.h" +#include "ServerStatMan.h" namespace aria2 { @@ -60,13 +61,17 @@ bool FillRequestGroupCommand::execute() if(_e->isHaltRequested()) { return true; } - try { - _e->_requestGroupMan->fillRequestGroupFromReserver(_e); - } catch(RecoverableException& ex) { - logger->error(EX_EXCEPTION_CAUGHT, ex); - } - if(_e->_requestGroupMan->downloadFinished()) { - return true; + SharedHandle rgman = _e->_requestGroupMan; + if(rgman->queueCheckRequested()) { + try { + rgman->fillRequestGroupFromReserver(_e); + rgman->clearQueueCheck(); + } catch(RecoverableException& ex) { + logger->error(EX_EXCEPTION_CAUGHT, ex); + } + if(rgman->downloadFinished()) { + return true; + } } _e->addRoutineCommand(this); return false; diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index 275cd164..c2a0f092 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -130,6 +130,7 @@ RequestGroup::RequestGroup(const SharedHandle