diff options
author | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-09-29 19:18:20 +0530 |
---|---|---|
committer | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-10-04 12:43:06 +0530 |
commit | a29a3eb71fed0e17d60dcbb16a32ba7e6a70b852 (patch) | |
tree | 7ea94f409bcb3a75ff8a0f59c8f1b8e9531b9621 | |
parent | 4636e07c194b01da42b5bcaa813200077b539ad7 (diff) | |
download | phosphor-settingsd-a29a3eb71fed0e17d60dcbb16a32ba7e6a70b852.tar.gz phosphor-settingsd-a29a3eb71fed0e17d60dcbb16a32ba7e6a70b852.zip |
Enable Cereal class versioning
Fixes openbmc/openbmc#2320
Change-Id: Iac2649cd5f4794e2049cbdd4eb2df874d26beaaa
Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | settings_manager.mako.hpp | 21 |
2 files changed, 23 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 895ce17..ec6df59 100644 --- a/configure.ac +++ b/configure.ac @@ -41,5 +41,9 @@ AS_IF([test "x$SETTINGS_PERSIST_PATH" == "x"], \ AC_DEFINE_UNQUOTED([SETTINGS_PERSIST_PATH], ["$SETTINGS_PERSIST_PATH"], \ [Path of directory housing persisted settings]) +AC_ARG_VAR(CLASS_VERSION, [Class version to register with Cereal]) +AS_IF([test "x$CLASS_VERSION" == "x"], [CLASS_VERSION=1]) +AC_DEFINE_UNQUOTED([CLASS_VERSION], [$CLASS_VERSION], [Class version to register with Cereal]) + AC_CONFIG_FILES([Makefile]) AC_OUTPUT diff --git a/settings_manager.mako.hpp b/settings_manager.mako.hpp index 9e0b3fd..09a5a1f 100644 --- a/settings_manager.mako.hpp +++ b/settings_manager.mako.hpp @@ -216,7 +216,8 @@ class Impl : public Parent template<class Archive> void save(Archive& a, - const Impl& setting) + const Impl& setting, + const std::uint32_t version) { <% props = [] @@ -231,7 +232,8 @@ props = ', '.join(props) template<class Archive> void load(Archive& a, - Impl& setting) + Impl& setting, + const std::uint32_t version) { <% props = [] %>\ % for index, item in enumerate(settingsDict[object]): @@ -349,3 +351,18 @@ class Manager } // namespace settings } // namespace phosphor + +// Now register the class version with Cereal +% for object in objects: +<% + classname = "phosphor::settings" + ns = object.split('/') + ns.pop(0) +%>\ +% for n in ns: +<% + classname += "::" + n +%>\ +% endfor +CEREAL_CLASS_VERSION(${classname + "::Impl"}, CLASS_VERSION); +% endfor |