summaryrefslogtreecommitdiffstats
path: root/src/templates/generated.mako.hpp
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2017-05-23 18:06:38 -0400
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2017-06-19 16:21:47 -0400
commit4b916f139a9b3ccac76610f5e4da1fe0bb4dfd51 (patch)
treedab7d7442a70591a533930dff1102de7ff4d6151 /src/templates/generated.mako.hpp
parentfac1b1035ad5a0339fc1af600866343452dd77d3 (diff)
downloadphosphor-dbus-monitor-4b916f139a9b3ccac76610f5e4da1fe0bb4dfd51.tar.gz
phosphor-dbus-monitor-4b916f139a9b3ccac76610f5e4da1fe0bb4dfd51.zip
Add property watches
Property watches cache DBus property values given an externally supplied index of property names and paths, in an externally supplied storage location. Change-Id: I155081da88c3ab0e4f6a13b012fc9719203b1888 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'src/templates/generated.mako.hpp')
-rw-r--r--src/templates/generated.mako.hpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/templates/generated.mako.hpp b/src/templates/generated.mako.hpp
index 7c6e527..0911e3a 100644
--- a/src/templates/generated.mako.hpp
+++ b/src/templates/generated.mako.hpp
@@ -4,6 +4,9 @@
#include <array>
#include <string>
+#include "data_types.hpp"
+#include "propertywatchimpl.hpp"
+#include "sdbusplus.hpp"
using namespace std::string_literals;
@@ -77,6 +80,69 @@ struct ConfigProperties
return properties;
}
};
+
+struct ConfigPropertyStorage
+{
+ using Storage = std::array<any_ns::any, ${len(instances)}>;
+
+ static auto& get()
+ {
+ static Storage storage;
+ return storage;
+ }
+};
+
+struct ConfigPropertyIndicies
+{
+ using PropertyIndicies = std::array<PropertyIndex, ${len(instancegroups)}>;
+
+ static auto& get()
+ {
+ static const PropertyIndicies propertyIndicies =
+ {
+ {
+% for g in instancegroups:
+ {
+ % for i in g.members:
+ {
+ PropertyIndex::key_type
+ {
+ ConfigPaths::get()[${i[0]}],
+ ConfigInterfaces::get()[${i[2]}],
+ ConfigProperties::get()[${i[3]}]
+ },
+ PropertyIndex::mapped_type
+ {
+ ConfigMeta::get()[${i[1]}],
+ ConfigMeta::get()[${i[4]}],
+ ConfigPropertyStorage::get()[${i[5]}]
+ },
+ },
+ % endfor
+ },
+% endfor
+ }
+ };
+ return propertyIndicies;
+ }
+};
+
+struct ConfigPropertyWatches
+{
+ using PropertyWatches = std::array<std::unique_ptr<Watch>, ${len(watches)}>;
+
+ static auto& get()
+ {
+ static const PropertyWatches propertyWatches =
+ {
+% for w in watches:
+ std::make_unique<PropertyWatchOfType<${w.datatype}, SDBusPlus>>(
+ ConfigPropertyIndicies::get()[${w.instances}]),
+% endfor
+ };
+ return propertyWatches;
+ }
+};
} // namespace monitoring
} // namespace dbus
} // namespace phosphor
OpenPOWER on IntegriCloud