summaryrefslogtreecommitdiffstats
path: root/elog_serialize.cpp
diff options
context:
space:
mode:
authorDeepak Kodihalli <dkodihal@in.ibm.com>2017-06-25 22:05:47 -0500
committerDeepak Kodihalli <dkodihal@in.ibm.com>2017-06-25 22:05:47 -0500
commitf1630eaa98da0fba6149d77f16ebbc4745b93e9c (patch)
tree2fe07d0cd441f29e1997531787db21a49836436c /elog_serialize.cpp
parent707a3e1b4d224ca273c67fcc1dba2a21d6d8e2c5 (diff)
downloadphosphor-logging-f1630eaa98da0fba6149d77f16ebbc4745b93e9c.tar.gz
phosphor-logging-f1630eaa98da0fba6149d77f16ebbc4745b93e9c.zip
Move serialization template functions
Move serialization template functions from elog_serialize.hpp to elog.serialize.cpp, since they are called only within the cpp. Change-Id: I8df216e1d4a745d1386fc310fc5d4d9535a8b7c3 Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
Diffstat (limited to 'elog_serialize.cpp')
-rw-r--r--elog_serialize.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/elog_serialize.cpp b/elog_serialize.cpp
index 0468e11..72dc295 100644
--- a/elog_serialize.cpp
+++ b/elog_serialize.cpp
@@ -10,6 +10,50 @@ namespace phosphor
namespace logging
{
+/** @brief Function required by Cereal to perform serialization.
+ * @tparam Archive - Cereal archive type (binary in our case).
+ * @param[in] a - reference to Cereal archive.
+ * @param[in] e - const reference to error entry.
+ */
+template<class Archive>
+void save(Archive& a, const Entry& e)
+{
+ a(e.id(), e.severity(), e.timestamp(),
+ e.message(), e.additionalData(), e.associations(), e.resolved());
+}
+
+/** @brief Function required by Cereal to perform deserialization.
+ * @tparam Archive - Cereal archive type (binary in our case).
+ * @param[in] a - reference to Cereal archive.
+ * @param[in] e - reference to error entry.
+ */
+template<class Archive>
+void load(Archive& a, Entry& e)
+{
+ using namespace
+ sdbusplus::xyz::openbmc_project::Logging::server;
+
+ uint32_t id{};
+ Entry::Level severity{};
+ uint64_t timestamp{};
+ std::string message{};
+ std::vector<std::string> additionalData{};
+ bool resolved{};
+ AssociationList associations{};
+
+ a(id, severity, timestamp, message,
+ additionalData, associations, resolved);
+
+ e.id(id);
+ e.severity(severity);
+ e.timestamp(timestamp);
+ e.message(message);
+ e.additionalData(additionalData);
+ e.sdbusplus::xyz::openbmc_project::
+ Logging::server::Entry::resolved(resolved);
+ e.associations(associations);
+}
+
fs::path serialize(const Entry& e, const fs::path& dir)
{
auto path = dir / std::to_string(e.id());
OpenPOWER on IntegriCloud