summaryrefslogtreecommitdiffstats
path: root/serialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize.cpp')
-rw-r--r--serialize.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/serialize.cpp b/serialize.cpp
new file mode 100644
index 000000000..e2e8bfd22
--- /dev/null
+++ b/serialize.cpp
@@ -0,0 +1,51 @@
+#include "config.h"
+#include <experimental/filesystem>
+#include <cereal/archives/binary.hpp>
+#include <fstream>
+#include "serialize.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace updater
+{
+
+namespace fs = std::experimental::filesystem;
+
+void storeToFile(std::string versionId, uint8_t priority)
+{
+ if(!fs::is_directory(PERSIST_DIR))
+ {
+ fs::create_directory(PERSIST_DIR);
+ }
+ std::string path = PERSIST_DIR + versionId;
+
+ std::ofstream os(path.c_str(), std::ios::binary);
+ cereal::BinaryOutputArchive oarchive(os);
+ oarchive(priority);
+}
+
+void 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 | std::ios::binary);
+ cereal::BinaryInputArchive iarchive(is);
+ iarchive(*priority);
+ }
+}
+
+void removeFile(std::string versionId)
+{
+ std::string path = PERSIST_DIR + versionId;
+ if (fs::exists(path))
+ {
+ fs::remove(path);
+ }
+}
+
+} // namespace updater
+} // namespace software
+} // namespace openpower
OpenPOWER on IntegriCloud