diff options
Diffstat (limited to 'serialize.cpp')
-rw-r--r-- | serialize.cpp | 51 |
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 |