blob: 8dbaa2019e7ec5900022fe68e4f6f0706d84ee85 [file] [log] [blame]
Brad Bishop870c3fc2017-05-22 23:23:13 -04001## This file is a template, the comment below is emitted into the generated file
2/* This is an auto generated file. Do not edit. */
3#pragma once
4
Brad Bishop05b0c1e2017-05-23 00:24:01 -04005#include <array>
Brad Bishop3539db62017-05-30 14:21:12 -04006#include <chrono>
Brad Bishop05b0c1e2017-05-23 00:24:01 -04007#include <string>
Brad Bishop4041d722017-05-21 10:06:07 -04008#include "count.hpp"
Brad Bishop4b916f12017-05-23 18:06:38 -04009#include "data_types.hpp"
Brad Bishopc1283ae2017-05-20 21:42:38 -040010#include "journal.hpp"
Gunnar Millsd5faea32017-08-08 14:19:36 -050011#include "elog.hpp"
12#include "errors.hpp"
Brad Bishop0df00be2017-05-25 23:38:37 -040013#include "method.hpp"
Brad Bishop4b916f12017-05-23 18:06:38 -040014#include "propertywatchimpl.hpp"
Marri Devender Rao80c70612018-04-12 09:22:55 -050015#include "pathwatchimpl.hpp"
Matt Spinler1d6ca482017-11-01 10:48:02 -050016#include "resolve_errors.hpp"
Brad Bishop4b916f12017-05-23 18:06:38 -040017#include "sdbusplus.hpp"
Ratan Gupta90bfaea2017-10-06 20:56:31 +053018#include "event.hpp"
Marri Devender Rao80c70612018-04-12 09:22:55 -050019#include "snmp_trap.hpp"
Brad Bishopaabc5462017-05-30 12:39:22 -040020#include "sdevent.hpp"
Brad Bishop05b0c1e2017-05-23 00:24:01 -040021
22using namespace std::string_literals;
Brad Bishop3539db62017-05-30 14:21:12 -040023using namespace std::chrono_literals;
Brad Bishop05b0c1e2017-05-23 00:24:01 -040024
Brad Bishop870c3fc2017-05-22 23:23:13 -040025namespace phosphor
26{
27namespace dbus
28{
29namespace monitoring
30{
31
Brad Bishop0e7df132017-05-23 17:58:12 -040032struct ConfigMeta
33{
34 using Meta = std::array<std::string, ${len(meta)}>;
35
36 static auto& get()
37 {
38 static const Meta meta =
39 {
40% for m in meta:
41 "${m.name}"s,
42% endfor
43 };
44 return meta;
45 }
46};
47
48struct ConfigPaths
49{
50 using Paths = std::array<std::string, ${len(paths)}>;
51
52 static auto& get()
53 {
54 static const Paths paths =
55 {
56% for p in paths:
57 "${p.name}"s,
58% endfor
59 };
60 return paths;
61 }
62};
Brad Bishope73b2c32017-05-23 18:01:54 -040063
64struct ConfigInterfaces
65{
66 using Interfaces = std::array<std::string, ${len(interfaces)}>;
67
68 static auto& get()
69 {
70 static const Interfaces interfaces =
71 {
72% for i in interfaces:
73 "${i.name}"s,
74% endfor
75 };
76 return interfaces;
77 }
78};
79
Marri Devender Rao80c70612018-04-12 09:22:55 -050080struct ConfigIntfAddPaths
81{
82 using Paths = std::array<std::string, ${len(pathinstances)}>;
83
84 static auto& get()
85 {
86 static const Paths paths =
87 {
88% for p in pathinstances:
89 "${p.path}"s,
90% endfor
91 };
92 return paths;
93 }
94};
95
Brad Bishope73b2c32017-05-23 18:01:54 -040096struct ConfigProperties
97{
98 using Properties = std::array<std::string, ${len(propertynames)}>;
99
100 static auto& get()
101 {
102 static const Properties properties =
103 {
104% for p in propertynames:
105 "${p.name}"s,
106% endfor
107 };
108 return properties;
109 }
110};
Brad Bishop4b916f12017-05-23 18:06:38 -0400111
112struct ConfigPropertyStorage
113{
Matt Spinlerabe43ab2018-02-19 13:34:43 -0600114 using Storage = std::array<std::tuple<any_ns::any, any_ns::any>, ${len(instances)}>;
Brad Bishop4b916f12017-05-23 18:06:38 -0400115
116 static auto& get()
117 {
118 static Storage storage;
119 return storage;
120 }
121};
122
123struct ConfigPropertyIndicies
124{
125 using PropertyIndicies = std::array<PropertyIndex, ${len(instancegroups)}>;
126
127 static auto& get()
128 {
129 static const PropertyIndicies propertyIndicies =
130 {
131 {
132% for g in instancegroups:
133 {
134 % for i in g.members:
135 {
136 PropertyIndex::key_type
137 {
Brad Bishop1ada93b2017-05-31 19:46:52 -0400138 ConfigPaths::get()[${i[0]}],
139 ConfigInterfaces::get()[${i[2]}],
140 ConfigProperties::get()[${i[3]}]
Brad Bishop4b916f12017-05-23 18:06:38 -0400141 },
142 PropertyIndex::mapped_type
143 {
Brad Bishop1ada93b2017-05-31 19:46:52 -0400144 ConfigMeta::get()[${i[1]}],
145 ConfigMeta::get()[${i[4]}],
146 ConfigPropertyStorage::get()[${i[5]}]
Brad Bishop4b916f12017-05-23 18:06:38 -0400147 },
148 },
149 % endfor
150 },
151% endfor
152 }
153 };
154 return propertyIndicies;
155 }
156};
157
Brad Bishop49e66172017-05-23 19:16:21 -0400158struct ConfigPropertyCallbackGroups
159{
160 using CallbackGroups = std::array<std::vector<size_t>, ${len(callbackgroups)}>;
161 static auto& get()
162 {
163 static const CallbackGroups propertyCallbackGraph =
164 {
165 {
166% for g in callbackgroups:
167 {${', '.join([str(x) for x in g.members])}},
168% endfor
169 }
170 };
171 return propertyCallbackGraph;
172 }
173};
174
Brad Bishop4041d722017-05-21 10:06:07 -0400175struct ConfigConditions
176{
177 using Conditions = std::array<std::unique_ptr<Conditional>, ${len(conditions)}>;
178
179 static auto& get()
180 {
181 static const Conditions propertyConditions =
182 {
183% for c in conditions:
184 ${c.construct(loader, indent=indent +3)},
185% endfor
186 };
187 return propertyConditions;
188 }
189};
190
Brad Bishopc1283ae2017-05-20 21:42:38 -0400191struct ConfigPropertyCallbacks
192{
193 using Callbacks = std::array<std::unique_ptr<Callback>, ${len(callbacks)}>;
194
195 static auto& get()
196 {
197 static const Callbacks propertyCallbacks =
198 {
199% for c in callbacks:
200 ${c.construct(loader, indent=indent +3)},
201% endfor
202 };
203 return propertyCallbacks;
204 }
205};
206
Marri Devender Rao80c70612018-04-12 09:22:55 -0500207struct ConfigPathCallbacks
208{
209 using Callbacks = std::array<std::unique_ptr<Callback>, ${len(pathcallbacks)}>;
210
211 static auto& get()
212 {
213 static const Callbacks pathCallbacks =
214 {
215% for c in pathcallbacks:
216 ${c.construct(loader, indent=indent +3)},
217% endfor
218 };
219 return pathCallbacks;
220 }
221};
222
Brad Bishop4b916f12017-05-23 18:06:38 -0400223struct ConfigPropertyWatches
224{
225 using PropertyWatches = std::array<std::unique_ptr<Watch>, ${len(watches)}>;
226
227 static auto& get()
228 {
229 static const PropertyWatches propertyWatches =
230 {
231% for w in watches:
232 std::make_unique<PropertyWatchOfType<${w.datatype}, SDBusPlus>>(
Brad Bishopfccdc392017-05-22 21:11:09 -0400233 % if w.callback is None:
Brad Bishop4b916f12017-05-23 18:06:38 -0400234 ConfigPropertyIndicies::get()[${w.instances}]),
Brad Bishopfccdc392017-05-22 21:11:09 -0400235 % else:
236 ConfigPropertyIndicies::get()[${w.instances}],
237 *ConfigPropertyCallbacks::get()[${w.callback}]),
238 % endif
Brad Bishop4b916f12017-05-23 18:06:38 -0400239% endfor
240 };
241 return propertyWatches;
242 }
243};
Marri Devender Rao80c70612018-04-12 09:22:55 -0500244
245struct ConfigPathWatches
246{
247 using PathWatches = std::array<std::unique_ptr<Watch>, ${len(pathwatches)}>;
248
249 static auto& get()
250 {
251 static const PathWatches pathWatches =
252 {
253% for w in pathwatches:
254 std::make_unique<PathWatch<SDBusPlus>>(
255 % if w.pathcallback is None:
256 ConfigIntfAddPaths::get()[${w.pathinstances}]),
257 % else:
258 ConfigIntfAddPaths::get()[${w.pathinstances}],
259 *ConfigPathCallbacks::get()[${w.pathcallback}]),
260 % endif
261% endfor
262 };
263 return pathWatches;
264 }
265};
Brad Bishop870c3fc2017-05-22 23:23:13 -0400266} // namespace monitoring
267} // namespace dbus
268} // namespace phosphor