diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-09-08 14:42:03 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-09-08 14:42:03 +0000 |
| commit | 420500f6bf53e0fafc6660deaa014b425af13fe7 (patch) | |
| tree | 5597d7de149d54dc3781a9e91a3bc540f5e0632e /src/FillRequestGroupCommand.cc | |
| parent | c51815dd5294dde6bc942738443ae5b01ff22118 (diff) | |
2010-09-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Call RequestGroupMan::fillRequestGroupFromReserver() repeatedly
while RequestGroupMan::requestQueueCheck() is true.
* src/FillRequestGroupCommand.cc
Diffstat (limited to 'src/FillRequestGroupCommand.cc')
| -rw-r--r-- | src/FillRequestGroupCommand.cc | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/FillRequestGroupCommand.cc b/src/FillRequestGroupCommand.cc index 0934ebc8..7e754108 100644 --- a/src/FillRequestGroupCommand.cc +++ b/src/FillRequestGroupCommand.cc @@ -63,17 +63,19 @@ bool FillRequestGroupCommand::execute() } SharedHandle<RequestGroupMan> rgman = e_->getRequestGroupMan(); if(rgman->queueCheckRequested()) { - try { - // During adding RequestGroup, - // RequestGroupMan::requestQueueCheck() might be called, so - // first clear it here. - rgman->clearQueueCheck(); - rgman->fillRequestGroupFromReserver(e_); - } catch(RecoverableException& ex) { - getLogger()->error(EX_EXCEPTION_CAUGHT, ex); - // Re-request queue check to fulfill the requests of all - // downloads, some might come after this exception. - rgman->requestQueueCheck(); + while(rgman->queueCheckRequested()) { + try { + // During adding RequestGroup, + // RequestGroupMan::requestQueueCheck() might be called, so + // first clear it here. + rgman->clearQueueCheck(); + rgman->fillRequestGroupFromReserver(e_); + } catch(RecoverableException& ex) { + getLogger()->error(EX_EXCEPTION_CAUGHT, ex); + // Re-request queue check to fulfill the requests of all + // downloads, some might come after this exception. + rgman->requestQueueCheck(); + } } if(rgman->downloadFinished()) { return true; |
