DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dump_dunedaq__confmodel.cpp File Reference
#include "conffwk/ConfigObject.hpp"
#include "conffwk/Configuration.hpp"
#include "confmodel/ActionPlan.hpp"
#include "confmodel/Application.hpp"
#include "confmodel/Connection.hpp"
#include "confmodel/ConnectionService.hpp"
#include "confmodel/ConnectivityService.hpp"
#include "confmodel/DaqApplication.hpp"
#include "confmodel/DaqModule.hpp"
#include "confmodel/DaqModulesGroup.hpp"
#include "confmodel/DaqModulesGroupById.hpp"
#include "confmodel/DaqModulesGroupByType.hpp"
#include "confmodel/DetDataReceiver.hpp"
#include "confmodel/DetDataSender.hpp"
#include "confmodel/DetectorConfig.hpp"
#include "confmodel/DetectorStream.hpp"
#include "confmodel/DetectorToDaqConnection.hpp"
#include "confmodel/DummyApplication.hpp"
#include "confmodel/DummyD2D.hpp"
#include "confmodel/DummyReceiver.hpp"
#include "confmodel/DummyResource.hpp"
#include "confmodel/DummyResourceSet.hpp"
#include "confmodel/DummyResourceSetAND.hpp"
#include "confmodel/DummySender.hpp"
#include "confmodel/DummyStream.hpp"
#include "confmodel/FSMCommand.hpp"
#include "confmodel/FSMaction.hpp"
#include "confmodel/FSMconfiguration.hpp"
#include "confmodel/FSMsequence.hpp"
#include "confmodel/FSMtransition.hpp"
#include "confmodel/FSMxTransition.hpp"
#include "confmodel/GeoId.hpp"
#include "confmodel/HostComponent.hpp"
#include "confmodel/Jsonable.hpp"
#include "confmodel/JsonableTest.hpp"
#include "confmodel/NetworkConnection.hpp"
#include "confmodel/NetworkDevice.hpp"
#include "confmodel/NetworkInterface.hpp"
#include "confmodel/OpMonConf.hpp"
#include "confmodel/OpMonURI.hpp"
#include "confmodel/PhysicalHost.hpp"
#include "confmodel/ProcessingResource.hpp"
#include "confmodel/Queue.hpp"
#include "confmodel/QueueWithSourceId.hpp"
#include "confmodel/RCApplication.hpp"
#include "confmodel/RCBroadcaster.hpp"
#include "confmodel/Resource.hpp"
#include "confmodel/ResourceSet.hpp"
#include "confmodel/ResourceSetDisableAND.hpp"
#include "confmodel/ResourceSetDisableOR.hpp"
#include "confmodel/ResourceTree.hpp"
#include "confmodel/Segment.hpp"
#include "confmodel/Service.hpp"
#include "confmodel/Session.hpp"
#include "confmodel/StorageDevice.hpp"
#include "confmodel/Variable.hpp"
#include "confmodel/VariableBase.hpp"
#include "confmodel/VariableSet.hpp"
#include "confmodel/VirtualHost.hpp"

Go to the source code of this file.

Functions

static void usage (const char *s)
 
static void no_param (const char *s)
 
int main (int argc, char *argv[])
 

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 91 of file dump_dunedaq__confmodel.cpp.

92{
93 // parse parameters
94
95 const char * db_name = nullptr;
96 const char * object_id = nullptr;
97 const char * query = "";
98 std::string class_name;
99 bool init_children = false;
100
101 for(int i = 1; i < argc; i++) {
102 const char * cp = argv[i];
103 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
104 usage(argv[0]);
105 return 0;
106 }
107 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
108 init_children = true;
109 }
110 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
111 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { db_name = argv[i]; }
112 }
113 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
114 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { class_name = argv[i]; }
115 }
116 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
117 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { object_id = argv[i]; }
118 }
119 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
120 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { query = argv[i]; }
121 }
122 else {
123 std::cerr << "ERROR: bad parameter " << cp << std::endl;
124 usage(argv[0]);
125 return (EXIT_FAILURE);
126 }
127 }
128
129 if(db_name == nullptr) {
130 std::cerr << "ERROR: no database name provided\n";
131 return (EXIT_FAILURE);
132 }
133
134 if(class_name.empty()) {
135 std::cerr << "ERROR: no class name provided\n";
136 return (EXIT_FAILURE);
137 }
138
139 if(*query != 0 && object_id != nullptr) {
140 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
141 return (EXIT_FAILURE);
142 }
143
144
145std::cout << std::boolalpha;
146
147 try {
149
150 if(!conf.loaded()) {
151 std::cerr << "Can not load database: " << db_name << std::endl;
152 return (EXIT_FAILURE);
153 }
154
155 std::vector< dunedaq::conffwk::ConfigObject > objects;
156
157 if(object_id) {
159 try {
160 conf.get(class_name, object_id, obj, 1);
161 }
162 catch (dunedaq::conffwk::NotFound & ex) {
163 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
164 return (EXIT_FAILURE);
165 }
166 objects.push_back(obj);
167 }
168 else {
169 try {
170 conf.get(class_name, objects, query, 1);
171 }
172 catch (dunedaq::conffwk::NotFound & ex) {
173 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
174 return (EXIT_FAILURE);
175 }
176 }
177
178 struct SortByUId {
179 bool operator() (const dunedaq::conffwk::ConfigObject * o1, const dunedaq::conffwk::ConfigObject * o2) const {
180 return (o1->UID() < o2->UID());
181 };
182 };
183
184 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
185
186 for(auto& i : objects)
187 sorted_objects.insert(&i);
188
189 for(auto& i : sorted_objects) {
190 if(class_name == "ActionPlan") {
191 std::cout << *conf.get<dunedaq::confmodel::ActionPlan>(*i, init_children) << std::endl;
192 }
193 else if(class_name == "Application") {
194 std::cout << *conf.get<dunedaq::confmodel::Application>(*i, init_children) << std::endl;
195 }
196 else if(class_name == "Connection") {
197 std::cout << *conf.get<dunedaq::confmodel::Connection>(*i, init_children) << std::endl;
198 }
199 else if(class_name == "ConnectionService") {
200 std::cout << *conf.get<dunedaq::confmodel::ConnectionService>(*i, init_children) << std::endl;
201 }
202 else if(class_name == "ConnectivityService") {
203 std::cout << *conf.get<dunedaq::confmodel::ConnectivityService>(*i, init_children) << std::endl;
204 }
205 else if(class_name == "DaqApplication") {
206 std::cout << *conf.get<dunedaq::confmodel::DaqApplication>(*i, init_children) << std::endl;
207 }
208 else if(class_name == "DaqModule") {
209 std::cout << *conf.get<dunedaq::confmodel::DaqModule>(*i, init_children) << std::endl;
210 }
211 else if(class_name == "DaqModulesGroup") {
212 std::cout << *conf.get<dunedaq::confmodel::DaqModulesGroup>(*i, init_children) << std::endl;
213 }
214 else if(class_name == "DaqModulesGroupById") {
215 std::cout << *conf.get<dunedaq::confmodel::DaqModulesGroupById>(*i, init_children) << std::endl;
216 }
217 else if(class_name == "DaqModulesGroupByType") {
218 std::cout << *conf.get<dunedaq::confmodel::DaqModulesGroupByType>(*i, init_children) << std::endl;
219 }
220 else if(class_name == "DetDataReceiver") {
221 std::cout << *conf.get<dunedaq::confmodel::DetDataReceiver>(*i, init_children) << std::endl;
222 }
223 else if(class_name == "DetDataSender") {
224 std::cout << *conf.get<dunedaq::confmodel::DetDataSender>(*i, init_children) << std::endl;
225 }
226 else if(class_name == "DetectorConfig") {
227 std::cout << *conf.get<dunedaq::confmodel::DetectorConfig>(*i, init_children) << std::endl;
228 }
229 else if(class_name == "DetectorStream") {
230 std::cout << *conf.get<dunedaq::confmodel::DetectorStream>(*i, init_children) << std::endl;
231 }
232 else if(class_name == "DetectorToDaqConnection") {
233 std::cout << *conf.get<dunedaq::confmodel::DetectorToDaqConnection>(*i, init_children) << std::endl;
234 }
235 else if(class_name == "DummyApplication") {
236 std::cout << *conf.get<dunedaq::confmodel::DummyApplication>(*i, init_children) << std::endl;
237 }
238 else if(class_name == "DummyD2D") {
239 std::cout << *conf.get<dunedaq::confmodel::DummyD2D>(*i, init_children) << std::endl;
240 }
241 else if(class_name == "DummyReceiver") {
242 std::cout << *conf.get<dunedaq::confmodel::DummyReceiver>(*i, init_children) << std::endl;
243 }
244 else if(class_name == "DummyResource") {
245 std::cout << *conf.get<dunedaq::confmodel::DummyResource>(*i, init_children) << std::endl;
246 }
247 else if(class_name == "DummyResourceSet") {
248 std::cout << *conf.get<dunedaq::confmodel::DummyResourceSet>(*i, init_children) << std::endl;
249 }
250 else if(class_name == "DummyResourceSetAND") {
251 std::cout << *conf.get<dunedaq::confmodel::DummyResourceSetAND>(*i, init_children) << std::endl;
252 }
253 else if(class_name == "DummySender") {
254 std::cout << *conf.get<dunedaq::confmodel::DummySender>(*i, init_children) << std::endl;
255 }
256 else if(class_name == "DummyStream") {
257 std::cout << *conf.get<dunedaq::confmodel::DummyStream>(*i, init_children) << std::endl;
258 }
259 else if(class_name == "FSMCommand") {
260 std::cout << *conf.get<dunedaq::confmodel::FSMCommand>(*i, init_children) << std::endl;
261 }
262 else if(class_name == "FSMaction") {
263 std::cout << *conf.get<dunedaq::confmodel::FSMaction>(*i, init_children) << std::endl;
264 }
265 else if(class_name == "FSMconfiguration") {
266 std::cout << *conf.get<dunedaq::confmodel::FSMconfiguration>(*i, init_children) << std::endl;
267 }
268 else if(class_name == "FSMsequence") {
269 std::cout << *conf.get<dunedaq::confmodel::FSMsequence>(*i, init_children) << std::endl;
270 }
271 else if(class_name == "FSMtransition") {
272 std::cout << *conf.get<dunedaq::confmodel::FSMtransition>(*i, init_children) << std::endl;
273 }
274 else if(class_name == "FSMxTransition") {
275 std::cout << *conf.get<dunedaq::confmodel::FSMxTransition>(*i, init_children) << std::endl;
276 }
277 else if(class_name == "GeoId") {
278 std::cout << *conf.get<dunedaq::confmodel::GeoId>(*i, init_children) << std::endl;
279 }
280 else if(class_name == "HostComponent") {
281 std::cout << *conf.get<dunedaq::confmodel::HostComponent>(*i, init_children) << std::endl;
282 }
283 else if(class_name == "Jsonable") {
284 std::cout << *conf.get<dunedaq::confmodel::Jsonable>(*i, init_children) << std::endl;
285 }
286 else if(class_name == "JsonableTest") {
287 std::cout << *conf.get<dunedaq::confmodel::JsonableTest>(*i, init_children) << std::endl;
288 }
289 else if(class_name == "NetworkConnection") {
290 std::cout << *conf.get<dunedaq::confmodel::NetworkConnection>(*i, init_children) << std::endl;
291 }
292 else if(class_name == "NetworkDevice") {
293 std::cout << *conf.get<dunedaq::confmodel::NetworkDevice>(*i, init_children) << std::endl;
294 }
295 else if(class_name == "NetworkInterface") {
296 std::cout << *conf.get<dunedaq::confmodel::NetworkInterface>(*i, init_children) << std::endl;
297 }
298 else if(class_name == "OpMonConf") {
299 std::cout << *conf.get<dunedaq::confmodel::OpMonConf>(*i, init_children) << std::endl;
300 }
301 else if(class_name == "OpMonURI") {
302 std::cout << *conf.get<dunedaq::confmodel::OpMonURI>(*i, init_children) << std::endl;
303 }
304 else if(class_name == "PhysicalHost") {
305 std::cout << *conf.get<dunedaq::confmodel::PhysicalHost>(*i, init_children) << std::endl;
306 }
307 else if(class_name == "ProcessingResource") {
308 std::cout << *conf.get<dunedaq::confmodel::ProcessingResource>(*i, init_children) << std::endl;
309 }
310 else if(class_name == "Queue") {
311 std::cout << *conf.get<dunedaq::confmodel::Queue>(*i, init_children) << std::endl;
312 }
313 else if(class_name == "QueueWithSourceId") {
314 std::cout << *conf.get<dunedaq::confmodel::QueueWithSourceId>(*i, init_children) << std::endl;
315 }
316 else if(class_name == "RCApplication") {
317 std::cout << *conf.get<dunedaq::confmodel::RCApplication>(*i, init_children) << std::endl;
318 }
319 else if(class_name == "RCBroadcaster") {
320 std::cout << *conf.get<dunedaq::confmodel::RCBroadcaster>(*i, init_children) << std::endl;
321 }
322 else if(class_name == "Resource") {
323 std::cout << *conf.get<dunedaq::confmodel::Resource>(*i, init_children) << std::endl;
324 }
325 else if(class_name == "ResourceSet") {
326 std::cout << *conf.get<dunedaq::confmodel::ResourceSet>(*i, init_children) << std::endl;
327 }
328 else if(class_name == "ResourceSetDisableAND") {
329 std::cout << *conf.get<dunedaq::confmodel::ResourceSetDisableAND>(*i, init_children) << std::endl;
330 }
331 else if(class_name == "ResourceSetDisableOR") {
332 std::cout << *conf.get<dunedaq::confmodel::ResourceSetDisableOR>(*i, init_children) << std::endl;
333 }
334 else if(class_name == "ResourceTree") {
335 std::cout << *conf.get<dunedaq::confmodel::ResourceTree>(*i, init_children) << std::endl;
336 }
337 else if(class_name == "Segment") {
338 std::cout << *conf.get<dunedaq::confmodel::Segment>(*i, init_children) << std::endl;
339 }
340 else if(class_name == "Service") {
341 std::cout << *conf.get<dunedaq::confmodel::Service>(*i, init_children) << std::endl;
342 }
343 else if(class_name == "Session") {
344 std::cout << *conf.get<dunedaq::confmodel::Session>(*i, init_children) << std::endl;
345 }
346 else if(class_name == "StorageDevice") {
347 std::cout << *conf.get<dunedaq::confmodel::StorageDevice>(*i, init_children) << std::endl;
348 }
349 else if(class_name == "Variable") {
350 std::cout << *conf.get<dunedaq::confmodel::Variable>(*i, init_children) << std::endl;
351 }
352 else if(class_name == "VariableBase") {
353 std::cout << *conf.get<dunedaq::confmodel::VariableBase>(*i, init_children) << std::endl;
354 }
355 else if(class_name == "VariableSet") {
356 std::cout << *conf.get<dunedaq::confmodel::VariableSet>(*i, init_children) << std::endl;
357 }
358 else if(class_name == "VirtualHost") {
359 std::cout << *conf.get<dunedaq::confmodel::VirtualHost>(*i, init_children) << std::endl;
360 }
361 else {
362 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
363 return (EXIT_FAILURE);
364 }
365 }
366 }
367 catch (dunedaq::conffwk::Exception & ex) {
368 std::cerr << "Caught " << ex << std::endl;
369 return (EXIT_FAILURE);
370 }
371
372 return 0;
373}
Represents database objects.
const std::string & UID() const noexcept
Return object identity.
Defines base class for cache of template objects.
Try to access non-existent object or class.
Definition Errors.hpp:47
static void no_param(const char *s)
msgpack::object obj
static void usage()

◆ no_param()

static void no_param ( const char * s)
static

Definition at line 85 of file dump_dunedaq__confmodel.cpp.

86{
87 std::cerr << "ERROR: the required argument for option \'" << s << "\' is missing\n\n";
88 exit (EXIT_FAILURE);
89}

◆ usage()

static void usage ( const char * s)
static

Definition at line 65 of file dump_dunedaq__confmodel.cpp.

66{
67 std::cout << s << " -d db-name -c class-name [-q query | -i object-id] [-t]\n"
68 "\n"
69 "Options/Arguments:\n"
70 " -d | --data db-name mandatory name of the database\n"
71 " -c | --class-name class-name mandatory name of class\n"
72 " -q | --query query optional query to select class objects\n"
73 " -i | --object-id object-id optional identity to select one object\n"
74 " -t | --init-children all referenced objects are initialized (is used\n"
75 " for debug purposes and performance measurements)\n"
76 " -h | --help print this message\n"
77 "\n"
78 "Description:\n"
79 " The program prints out object(s) of given class.\n"
80 " If no query or object id is provided, all objects of the class are printed.\n"
81 " It is automatically generated by oksdalgen utility.\n"
82 "\n";
83}