/* */ #include "SessionSerializer.h" #include #include #include "RequestGroupMan.h" #include "a2functional.h" #include "File.h" #include "A2STR.h" #include "download_helper.h" #include "Option.h" #include "DownloadResult.h" #include "FileEntry.h" #include "prefs.h" #include "util.h" #include "array_fun.h" namespace aria2 { SessionSerializer::SessionSerializer (const SharedHandle& requestGroupMan): rgman_(requestGroupMan), saveError_(true), saveInProgress_(true), saveWaiting_(true) {} bool SessionSerializer::save(const std::string& filename) const { std::string tempFilename = strconcat(filename, "__temp"); { std::ofstream out(tempFilename.c_str(), std::ios::binary); if(!out) { return false; } save(out); out.flush(); if(!out) { return false; } } return File(tempFilename).renameTo(filename); } namespace { const std::vector& getCumulativeOpts() { static std::string cumulativeOpts[] = { PREF_INDEX_OUT, PREF_HEADER }; static std::vector opts (vbegin(cumulativeOpts), vend(cumulativeOpts)); return opts; } } // namespace namespace { bool inCumulativeOpts(const std::string& opt) { const std::vector& cumopts = getCumulativeOpts(); for(std::vector::const_iterator itr = cumopts.begin(), eoi = cumopts.end(); itr != eoi; ++itr) { if(opt == *itr) { return true; } } return false; } } // namespace namespace { void writeOption(std::ostream& out, const SharedHandle