217{
218
219
220 const char * db_name = nullptr;
221 const char * object_id = nullptr;
222 const char * query = "";
223 std::string class_name;
224 bool init_children = false;
225
226 for(int i = 1; i < argc; i++) {
227 const char * cp = argv[i];
228 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
230 return 0;
231 }
232 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
233 init_children = true;
234 }
235 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
236 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
237 }
238 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
239 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
240 }
241 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
242 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
243 }
244 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
245 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
246 }
247 else {
248 std::cerr << "ERROR: bad parameter " << cp << std::endl;
250 return (EXIT_FAILURE);
251 }
252 }
253
254 if(db_name == nullptr) {
255 std::cerr << "ERROR: no database name provided\n";
256 return (EXIT_FAILURE);
257 }
258
259 if(class_name.empty()) {
260 std::cerr << "ERROR: no class name provided\n";
261 return (EXIT_FAILURE);
262 }
263
264 if(*query != 0 && object_id != nullptr) {
265 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
266 return (EXIT_FAILURE);
267 }
268
269
270std::cout << std::boolalpha;
271
272 try {
274
275 if(!conf.loaded()) {
276 std::cerr << "Can not load database: " << db_name << std::endl;
277 return (EXIT_FAILURE);
278 }
279
280 std::vector< dunedaq::conffwk::ConfigObject > objects;
281
282 if(object_id) {
284 try {
285 conf.get(class_name, object_id, obj, 1);
286 }
288 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
289 return (EXIT_FAILURE);
290 }
291 objects.push_back(obj);
292 }
293 else {
294 try {
295 conf.get(class_name, objects, query, 1);
296 }
298 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
299 return (EXIT_FAILURE);
300 }
301 }
302
303 struct SortByUId {
305 return (o1->
UID() < o2->
UID());
306 };
307 };
308
309 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
310
311 for(auto& i : objects)
312 sorted_objects.insert(&i);
313
314 for(auto& i : sorted_objects) {
315 if(class_name == "AVXAbsRunSumProcessor") {
317 }
318 else if(class_name == "AVXFixedPedestalSubtractProcessor") {
320 }
321 else if(class_name == "AVXFrugalPedestalSubtractProcessor") {
323 }
324 else if(class_name == "AVXRunSumProcessor") {
326 }
327 else if(class_name == "AVXThresholdProcessor") {
329 }
330 else if(class_name == "CRTBernReaderConf") {
332 }
333 else if(class_name == "CRTBernReaderModule") {
335 }
336 else if(class_name == "CRTGrenobleReaderConf") {
338 }
339 else if(class_name == "CRTGrenobleReaderModule") {
341 }
342 else if(class_name == "CRTReaderApplication") {
344 }
345 else if(class_name == "CTBApplication") {
347 }
348 else if(class_name == "CTBCRTSubsystem") {
350 }
351 else if(class_name == "CTBCalibrationStream") {
353 }
354 else if(class_name == "CTBConf") {
356 }
357 else if(class_name == "CTBCountLLT") {
359 }
360 else if(class_name == "CTBHLT") {
362 }
363 else if(class_name == "CTBLLT") {
365 }
366 else if(class_name == "CTBMisc") {
368 }
369 else if(class_name == "CTBModule") {
371 }
372 else if(class_name == "CTBMonitorSocket") {
374 }
375 else if(class_name == "CTBPDSLLT") {
377 }
378 else if(class_name == "CTBPDSSubsystem") {
380 }
381 else if(class_name == "CTBPulser") {
383 }
384 else if(class_name == "CTBRandomTrigger") {
386 }
387 else if(class_name == "CTBReceiverSocket") {
389 }
390 else if(class_name == "CTBSocket") {
392 }
393 else if(class_name == "CTBSockets") {
395 }
396 else if(class_name == "CTBStatisticsSocket") {
398 }
399 else if(class_name == "CTBSubsystem") {
401 }
402 else if(class_name == "CTBTiming") {
404 }
405 else if(class_name == "CTBTrigger") {
407 }
408 else if(class_name == "CTBTriggerReport") {
410 }
411 else if(class_name == "CTBoardConf") {
413 }
414 else if(class_name == "ColdADCSettings") {
416 }
417 else if(class_name == "DFApplication") {
419 }
420 else if(class_name == "DFHWConf") {
422 }
423 else if(class_name == "DFOApplication") {
425 }
426 else if(class_name == "DFOConf") {
428 }
429 else if(class_name == "DFOModule") {
431 }
432 else if(class_name == "DPDKPortConfiguration") {
434 }
435 else if(class_name == "DPDKReaderConf") {
437 }
438 else if(class_name == "DPDKReaderModule") {
440 }
441 else if(class_name == "DPDKReceiver") {
443 }
444 else if(class_name == "DTSHSIApplication") {
446 }
447 else if(class_name == "DaphneApplication") {
449 }
450 else if(class_name == "DaphneConf") {
452 }
453 else if(class_name == "DaphneV2ADC") {
455 }
456 else if(class_name == "DaphneV2AFE") {
458 }
459 else if(class_name == "DaphneV2BoardConf") {
461 }
462 else if(class_name == "DaphneV2Channel") {
464 }
465 else if(class_name == "DaphneV2ControllerModule") {
467 }
468 else if(class_name == "DaphneV2LNA") {
470 }
471 else if(class_name == "DaphneV2PGA") {
473 }
474 else if(class_name == "DataHandlerConf") {
476 }
477 else if(class_name == "DataHandlerModule") {
479 }
480 else if(class_name == "DataProcessor") {
482 }
483 else if(class_name == "DataReaderConf") {
485 }
486 else if(class_name == "DataReaderModule") {
488 }
489 else if(class_name == "DataRecorderConf") {
491 }
492 else if(class_name == "DataRecorderModule") {
494 }
495 else if(class_name == "DataStoreConf") {
497 }
498 else if(class_name == "DataSubscriberModule") {
500 }
501 else if(class_name == "DataWriterConf") {
503 }
504 else if(class_name == "DataWriterModule") {
506 }
507 else if(class_name == "FDDataHandlerModule") {
509 }
510 else if(class_name == "FDFakeReaderModule") {
512 }
513 else if(class_name == "FEMBSettings") {
515 }
516 else if(class_name == "FakeDataApplication") {
518 }
519 else if(class_name == "FakeDataProdConf") {
521 }
522 else if(class_name == "FakeDataProdModule") {
524 }
525 else if(class_name == "FakeDataReceiver") {
527 }
528 else if(class_name == "FakeDataSender") {
530 }
531 else if(class_name == "FakeHSIApplication") {
533 }
534 else if(class_name == "FakeHSIEventGeneratorConf") {
536 }
537 else if(class_name == "FakeHSIEventGeneratorModule") {
539 }
540 else if(class_name == "FelixCardControllerModule") {
542 }
543 else if(class_name == "FelixDataReceiver") {
545 }
546 else if(class_name == "FelixDataSender") {
548 }
549 else if(class_name == "FelixInterface") {
551 }
552 else if(class_name == "FelixReaderConf") {
554 }
555 else if(class_name == "FelixReaderModule") {
557 }
558 else if(class_name == "FilenameParams") {
560 }
561 else if(class_name == "FragmentAggregatorModule") {
563 }
564 else if(class_name == "HDF5FileLayoutParams") {
566 }
567 else if(class_name == "HDF5PathParams") {
569 }
570 else if(class_name == "HSI2TCTranslatorConf") {
572 }
573 else if(class_name == "HSIDataHandlerModule") {
575 }
576 else if(class_name == "HSIEventSender") {
578 }
579 else if(class_name == "HSIEventToTCApplication") {
581 }
582 else if(class_name == "HSIFrameProcessor") {
584 }
585 else if(class_name == "HSIReadout") {
587 }
588 else if(class_name == "HSIReadoutConf") {
590 }
591 else if(class_name == "HSISignalWindow") {
593 }
594 else if(class_name == "HermesDataSender") {
596 }
597 else if(class_name == "HermesModule") {
599 }
600 else if(class_name == "HermesModuleConf") {
602 }
603 else if(class_name == "IpbusAddressTable") {
605 }
606 else if(class_name == "IpbusDevice") {
608 }
609 else if(class_name == "LatencyBuffer") {
611 }
612 else if(class_name == "MLTApplication") {
614 }
615 else if(class_name == "MLTConf") {
617 }
618 else if(class_name == "MLTModule") {
620 }
621 else if(class_name == "NICStatsConf") {
623 }
624 else if(class_name == "NP02ReadoutApplication") {
626 }
627 else if(class_name == "NWDetDataReceiver") {
629 }
630 else if(class_name == "NWDetDataSender") {
632 }
633 else if(class_name == "NetworkConnectionDescriptor") {
635 }
636 else if(class_name == "NetworkConnectionRule") {
638 }
639 else if(class_name == "ProcessingStep") {
641 }
642 else if(class_name == "QueueConnectionRule") {
644 }
645 else if(class_name == "QueueDescriptor") {
647 }
648 else if(class_name == "ROIGroupConf") {
650 }
651 else if(class_name == "RandomTCMakerConf") {
653 }
654 else if(class_name == "RandomTCMakerModule") {
656 }
657 else if(class_name == "RawDataProcessor") {
659 }
660 else if(class_name == "ReadoutApplication") {
662 }
663 else if(class_name == "ReadoutHost") {
665 }
666 else if(class_name == "RequestHandler") {
668 }
669 else if(class_name == "RoHwConfig") {
671 }
672 else if(class_name == "SSPLEDCalibModule") {
674 }
675 else if(class_name == "SSPRegister") {
677 }
678 else if(class_name == "SamplesOverThresholdMinima") {
680 }
681 else if(class_name == "SmartDaqApplication") {
683 }
684 else if(class_name == "SocketDataSender") {
686 }
687 else if(class_name == "SocketDataWriterConf") {
689 }
690 else if(class_name == "SocketDataWriterModule") {
692 }
693 else if(class_name == "SocketReaderConf") {
695 }
696 else if(class_name == "SocketReaderModule") {
698 }
699 else if(class_name == "SocketReceiver") {
701 }
702 else if(class_name == "SocketWriterConf") {
704 }
705 else if(class_name == "SocketWriterModule") {
707 }
708 else if(class_name == "SourceIDConf") {
710 }
711 else if(class_name == "SourceIDToNetworkConnection") {
713 }
714 else if(class_name == "StandaloneTCMakerConf") {
716 }
717 else if(class_name == "StandaloneTCMakerModule") {
719 }
720 else if(class_name == "StreamEmulationParameters") {
722 }
723 else if(class_name == "SubdetectorReadoutWindowMap") {
725 }
726 else if(class_name == "TAAlgorithm") {
728 }
729 else if(class_name == "TADataProcessor") {
731 }
732 else if(class_name == "TAMakerADCSimpleWindowAlgorithm") {
734 }
735 else if(class_name == "TAMakerBundleNAlgorithm") {
737 }
738 else if(class_name == "TAMakerChannelAdjacencyAlgorithm") {
740 }
741 else if(class_name == "TAMakerChannelDistanceAlgorithm") {
743 }
744 else if(class_name == "TAMakerDBSCANAlgorithm") {
746 }
747 else if(class_name == "TAMakerHorizontalMuonAlgorithm") {
749 }
750 else if(class_name == "TAMakerMichelElectronAlgorithm") {
752 }
753 else if(class_name == "TAMakerPlaneCoincidenceAlgorithm") {
755 }
756 else if(class_name == "TAMakerPrescaleAlgorithm") {
758 }
759 else if(class_name == "TCAlgorithm") {
761 }
762 else if(class_name == "TCDataProcessor") {
764 }
765 else if(class_name == "TCMakerADCSimpleWindowAlgorithm") {
767 }
768 else if(class_name == "TCMakerBundleNAlgorithm") {
770 }
771 else if(class_name == "TCMakerChannelAdjacencyAlgorithm") {
773 }
774 else if(class_name == "TCMakerChannelDistanceAlgorithm") {
776 }
777 else if(class_name == "TCMakerDBSCANAlgorithm") {
779 }
780 else if(class_name == "TCMakerHorizontalMuonAlgorithm") {
782 }
783 else if(class_name == "TCMakerMichelElectronAlgorithm") {
785 }
786 else if(class_name == "TCMakerPlaneCoincidenceAlgorithm") {
788 }
789 else if(class_name == "TCMakerPrescaleAlgorithm") {
791 }
792 else if(class_name == "TCReadoutMap") {
794 }
795 else if(class_name == "TDEAMCModule") {
797 }
798 else if(class_name == "TDEAMCModuleConf") {
800 }
801 else if(class_name == "TDECrateApplication") {
803 }
804 else if(class_name == "TPDataProcessor") {
806 }
807 else if(class_name == "TPReplayApplication") {
809 }
810 else if(class_name == "TPReplayModule") {
812 }
813 else if(class_name == "TPReplayModuleConf") {
815 }
816 else if(class_name == "TPStreamConf") {
818 }
819 else if(class_name == "TPStreamWriterApplication") {
821 }
822 else if(class_name == "TPStreamWriterConf") {
824 }
825 else if(class_name == "TPStreamWriterModule") {
827 }
828 else if(class_name == "TRBConf") {
830 }
831 else if(class_name == "TRBModule") {
833 }
834 else if(class_name == "TdeAmcDetDataSender") {
836 }
837 else if(class_name == "TriggerApplication") {
839 }
840 else if(class_name == "TriggerBitword") {
842 }
843 else if(class_name == "TriggerDataHandlerModule") {
845 }
846 else if(class_name == "WIBModule") {
848 }
849 else if(class_name == "WIBModuleConf") {
851 }
852 else if(class_name == "WIBPulserSettings") {
854 }
855 else if(class_name == "WIBSettings") {
857 }
858 else if(class_name == "WIECApplication") {
860 }
861 else {
862 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
863 return (EXIT_FAILURE);
864 }
865 }
866 }
867 catch (dunedaq::conffwk::Exception & ex) {
868 std::cerr << "Caught " << ex << std::endl;
869 return (EXIT_FAILURE);
870 }
871
872 return 0;
873}
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.
static void no_param(const char *s)