summaryrefslogtreecommitdiffstats
path: root/serialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize.cpp')
-rw-r--r--serialize.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/serialize.cpp b/serialize.cpp
index 8e957272b..a499798c4 100644
--- a/serialize.cpp
+++ b/serialize.cpp
@@ -26,15 +26,24 @@ void storeToFile(std::string versionId, uint8_t priority)
oarchive(cereal::make_nvp("priority", priority));
}
-void restoreFromFile(std::string versionId, uint8_t *priority)
+bool restoreFromFile(std::string versionId, uint8_t& priority)
{
std::string path = PERSIST_DIR + versionId;
if (fs::exists(path))
{
std::ifstream is(path.c_str(), std::ios::in);
- cereal::JSONInputArchive iarchive(is);
- iarchive(cereal::make_nvp("priority", *priority));
+ try
+ {
+ cereal::JSONInputArchive iarchive(is);
+ iarchive(cereal::make_nvp("priority", priority));
+ return true;
+ }
+ catch(cereal::RapidJSONException& e)
+ {
+ fs::remove(path);
+ }
}
+ return false;
}
void removeFile(std::string versionId)
OpenPOWER on IntegriCloud