Add support for callbacks
Callbacks are the response in the PDM 'trigger->response' model.
Add general support for implementing callbacks and implement
a log to systemd journal using that framework.
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: I8bead5368ee5472a02b47e8bba9e9df3a1f346bc
diff --git a/src/templates/generated.mako.hpp b/src/templates/generated.mako.hpp
index 0911e3a..61c2b6f 100644
--- a/src/templates/generated.mako.hpp
+++ b/src/templates/generated.mako.hpp
@@ -5,6 +5,7 @@
#include <array>
#include <string>
#include "data_types.hpp"
+#include "journal.hpp"
#include "propertywatchimpl.hpp"
#include "sdbusplus.hpp"
@@ -107,15 +108,15 @@
{
PropertyIndex::key_type
{
- ConfigPaths::get()[${i[0]}],
- ConfigInterfaces::get()[${i[2]}],
- ConfigProperties::get()[${i[3]}]
+ std::cref(ConfigPaths::get()[${i[0]}]),
+ std::cref(ConfigInterfaces::get()[${i[2]}]),
+ std::cref(ConfigProperties::get()[${i[3]}])
},
PropertyIndex::mapped_type
{
- ConfigMeta::get()[${i[1]}],
- ConfigMeta::get()[${i[4]}],
- ConfigPropertyStorage::get()[${i[5]}]
+ std::cref(ConfigMeta::get()[${i[1]}]),
+ std::cref(ConfigMeta::get()[${i[4]}]),
+ std::ref(ConfigPropertyStorage::get()[${i[5]}])
},
},
% endfor
@@ -127,6 +128,22 @@
}
};
+struct ConfigPropertyCallbacks
+{
+ using Callbacks = std::array<std::unique_ptr<Callback>, ${len(callbacks)}>;
+
+ static auto& get()
+ {
+ static const Callbacks propertyCallbacks =
+ {
+% for c in callbacks:
+ ${c.construct(loader, indent=indent +3)},
+% endfor
+ };
+ return propertyCallbacks;
+ }
+};
+
struct ConfigPropertyWatches
{
using PropertyWatches = std::array<std::unique_ptr<Watch>, ${len(watches)}>;