diff options
author | Deepak Kodihalli <dkodihal@in.ibm.com> | 2017-06-25 22:05:47 -0500 |
---|---|---|
committer | Deepak Kodihalli <dkodihal@in.ibm.com> | 2017-06-25 22:05:47 -0500 |
commit | f1630eaa98da0fba6149d77f16ebbc4745b93e9c (patch) | |
tree | 2fe07d0cd441f29e1997531787db21a49836436c /elog_serialize.cpp | |
parent | 707a3e1b4d224ca273c67fcc1dba2a21d6d8e2c5 (diff) | |
download | phosphor-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.cpp | 44 |
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()); |