diff options
Diffstat (limited to 'src/SaveSessionCommand.cc')
| -rw-r--r-- | src/SaveSessionCommand.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/SaveSessionCommand.cc b/src/SaveSessionCommand.cc index d94815ad..7e557f27 100644 --- a/src/SaveSessionCommand.cc +++ b/src/SaveSessionCommand.cc @@ -60,12 +60,23 @@ void SaveSessionCommand::preProcess() void SaveSessionCommand::process() { + auto& rgman = getDownloadEngine()->getRequestGroupMan(); + + if(!rgman->getRequireSaveSession()) { + A2_LOG_INFO("No change in queues since last serialization or startup. " + "No serialization is necessary this time."); + return; + } + const std::string& filename = getDownloadEngine()->getOption() ->get(PREF_SAVE_SESSION); + if(!filename.empty()) { - SessionSerializer sessionSerializer(getDownloadEngine()-> - getRequestGroupMan().get()); + SessionSerializer sessionSerializer(rgman.get()); + if(sessionSerializer.save(filename)) { + rgman->clearRequireSaveSession(); + A2_LOG_NOTICE(fmt(_("Serialized session to '%s' successfully."), filename.c_str())); } else { |
