diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-12-04 18:24:38 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-12-04 18:24:38 +0900 |
| commit | 0cdfc3d104cf02a310e8a8ed2f3e6f4d397a9e21 (patch) | |
| tree | 454ef7b6d9cae1f5988e600f31db0af8924413d2 | |
| parent | 567b4249079051e0c61e9a587f020b993aff829c (diff) | |
Call RequestGroupMan::removeStoppedGroup() in
DownloadEngine::onEndOfRun() to process RequestGroup objects currently
in-progress.
With this change, --on-download-stop/error/complete hooks are properly
called for in-progress downloads when Ctrl-C is pressed.
| -rw-r--r-- | src/DownloadEngine.cc | 2 | ||||
| -rw-r--r-- | src/RequestGroupMan.cc | 19 | ||||
| -rw-r--r-- | src/SessionSerializer.cc | 12 |
3 files changed, 1 insertions, 32 deletions
diff --git a/src/DownloadEngine.cc b/src/DownloadEngine.cc index ec23ce2a..c03ca622 100644 --- a/src/DownloadEngine.cc +++ b/src/DownloadEngine.cc @@ -208,7 +208,7 @@ void DownloadEngine::calculateStatistics() void DownloadEngine::onEndOfRun() { - requestGroupMan_->updateServerStat(); + requestGroupMan_->removeStoppedGroup(this); requestGroupMan_->closeFile(); requestGroupMan_->save(); } diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index b3ef0578..3e88e2e4 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -635,25 +635,6 @@ void RequestGroupMan::showDownloadResults(std::ostream& o) const o << formatDownloadResult(status, *itr) << "\n"; } for(std::deque<SharedHandle<RequestGroup> >::const_iterator itr = - requestGroups_.begin(), eoi = requestGroups_.end(); itr != eoi; ++itr) { - DownloadResultHandle result = (*itr)->createDownloadResult(); - std::string status; - if(result->result == error_code::FINISHED) { - status = MARK_OK; - ++ok; - } else { - // Since this RequestGroup is not processed by ProcessStoppedRequestGroup, - // its download stop time is not reseted. - // Reset download stop time and assign sessionTime here. - (*itr)->getDownloadContext()->resetDownloadStopTime(); - result->sessionTime = - (*itr)->getDownloadContext()->calculateSessionTime(); - status = MARK_INPR; - ++inpr; - } - o << formatDownloadResult(status, result) << "\n"; - } - for(std::deque<SharedHandle<RequestGroup> >::const_iterator itr = reservedGroups_.begin(), eoi = reservedGroups_.end(); itr != eoi; ++itr) { if(!(*itr)->isPauseRequested()) { diff --git a/src/SessionSerializer.cc b/src/SessionSerializer.cc index 9001dbe6..886f610d 100644 --- a/src/SessionSerializer.cc +++ b/src/SessionSerializer.cc @@ -184,18 +184,6 @@ void SessionSerializer::save(std::ostream& out) const } } } - if(saveInProgress_) { - const std::deque<SharedHandle<RequestGroup> >& groups = - rgman_->getRequestGroups(); - for(std::deque<SharedHandle<RequestGroup> >::const_iterator itr = - groups.begin(), eoi = groups.end(); itr != eoi; ++itr) { - SharedHandle<DownloadResult> result = (*itr)->createDownloadResult(); - if(result->result == error_code::FINISHED) { - continue; - } - writeDownloadResult(out, metainfoCache, result); - } - } if(saveWaiting_) { const std::deque<SharedHandle<RequestGroup> >& groups = rgman_->getReservedGroups(); |
