summaryrefslogtreecommitdiff
path: root/src/FillRequestGroupCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-05 14:02:23 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-05 14:02:23 +0000
commitfe8fea56ca586df592470d82bcec93d7bc8b27ba (patch)
tree8852a13c4339b051f5fa4d013fcf755e238834d2 /src/FillRequestGroupCommand.cc
parentdb4ed87f7a944a8d177ca8c13efc68f127b7b37d (diff)
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
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
Diffstat (limited to 'src/FillRequestGroupCommand.cc')
-rw-r--r--src/FillRequestGroupCommand.cc19
1 files changed, 12 insertions, 7 deletions
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<RequestGroupMan> 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;