Simplify session serializer

pull/735/head
Nils Maier 2016-08-29 15:52:07 +02:00
parent 5ea3bcc349
commit 852e2db586
1 changed files with 17 additions and 27 deletions

View File

@ -277,38 +277,28 @@ bool SessionSerializer::save(IOFile& fp) const
std::set<a2_gid_t> metainfoCache; std::set<a2_gid_t> metainfoCache;
const DownloadResultList& results = rgman_->getDownloadResults(); const DownloadResultList& results = rgman_->getDownloadResults();
for (const auto& dr : results) { for (const auto& dr : results) {
if (dr->result == error_code::FINISHED || auto save = false;
dr->result == error_code::REMOVED) { switch (dr->result) {
if (dr->option->getAsBool(PREF_FORCE_SAVE)) { case error_code::FINISHED:
if (!writeDownloadResult(fp, metainfoCache, dr, false)) { case error_code::REMOVED:
return false; save = dr->option->getAsBool(PREF_FORCE_SAVE);
} break;
} case error_code::IN_PROGRESS:
else { save = saveInProgress_;
continue; break;
} default:
save = saveError_;
break;
} }
else if (dr->result == error_code::IN_PROGRESS) { if (save && !writeDownloadResult(fp, metainfoCache, dr, false)) {
if (saveInProgress_) { return false;
if (!writeDownloadResult(fp, metainfoCache, dr, false)) {
return false;
}
}
}
else {
// error download
if (saveError_) {
if (!writeDownloadResult(fp, metainfoCache, dr, false)) {
return false;
}
}
} }
} }
{ {
// Save active downloads. // Save active downloads.
const RequestGroupList& groups = rgman_->getRequestGroups(); const RequestGroupList& groups = rgman_->getRequestGroups();
for (const auto& rg : groups) { for (const auto& rg : groups) {
std::shared_ptr<DownloadResult> dr = rg->createDownloadResult(); auto dr = rg->createDownloadResult();
bool stopped = dr->result == error_code::FINISHED || bool stopped = dr->result == error_code::FINISHED ||
dr->result == error_code::REMOVED; dr->result == error_code::REMOVED;
if ((!stopped && saveInProgress_) || if ((!stopped && saveInProgress_) ||
@ -321,9 +311,9 @@ bool SessionSerializer::save(IOFile& fp) const
} }
} }
if (saveWaiting_) { if (saveWaiting_) {
const RequestGroupList& groups = rgman_->getReservedGroups(); const auto& groups = rgman_->getReservedGroups();
for (const auto& rg : groups) { for (const auto& rg : groups) {
std::shared_ptr<DownloadResult> result = rg->createDownloadResult(); auto result = rg->createDownloadResult();
if (!writeDownloadResult(fp, metainfoCache, result, if (!writeDownloadResult(fp, metainfoCache, result,
rg->isPauseRequested())) { rg->isPauseRequested())) {
return false; return false;