diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-05-23 18:06:38 -0400 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-06-19 16:21:47 -0400 |
commit | 4b916f139a9b3ccac76610f5e4da1fe0bb4dfd51 (patch) | |
tree | dab7d7442a70591a533930dff1102de7ff4d6151 /src/templates/generated.mako.hpp | |
parent | fac1b1035ad5a0339fc1af600866343452dd77d3 (diff) | |
download | phosphor-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.hpp | 66 |
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 |