216int main(
int argc,
char *argv[])
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;
226 for(
int i = 1; i < argc; i++) {
227 const char * cp = argv[i];
228 if(!strcmp(cp,
"-h") || !strcmp(cp,
"--help")) {
232 if(!strcmp(cp,
"-t") || !strcmp(cp,
"--init-children")) {
233 init_children =
true;
235 else if(!strcmp(cp,
"-d") || !strcmp(cp,
"--data")) {
236 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
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]; }
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]; }
244 else if(!strcmp(cp,
"-q") || !strcmp(cp,
"--query")) {
245 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
248 std::cerr <<
"ERROR: bad parameter " << cp << std::endl;
250 return (EXIT_FAILURE);
254 if(db_name ==
nullptr) {
255 std::cerr <<
"ERROR: no database name provided\n";
256 return (EXIT_FAILURE);
259 if(class_name.empty()) {
260 std::cerr <<
"ERROR: no class name provided\n";
261 return (EXIT_FAILURE);
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);
270std::cout << std::boolalpha;
276 std::cerr <<
"Can not load database: " << db_name << std::endl;
277 return (EXIT_FAILURE);
280 std::vector< dunedaq::conffwk::ConfigObject > objects;
285 conf.
get(class_name, object_id, obj, 1);
288 std::cerr <<
"Can not get object \'" << object_id <<
"\' of class \'" << class_name <<
"\':\n" << ex << std::endl;
289 return (EXIT_FAILURE);
291 objects.push_back(obj);
295 conf.
get(class_name, objects, query, 1);
298 std::cerr <<
"Can not get objects of class \'" << class_name <<
"\':\n" << ex << std::endl;
299 return (EXIT_FAILURE);
305 return (o1->
UID() < o2->
UID());
309 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
311 for(
auto& i : objects)
312 sorted_objects.insert(&i);
314 for(
auto& i : sorted_objects) {
315 if(class_name ==
"AVXAbsRunSumProcessor") {
318 else if(class_name ==
"AVXFixedPedestalSubtractProcessor") {
321 else if(class_name ==
"AVXFrugalPedestalSubtractProcessor") {
324 else if(class_name ==
"AVXRunSumProcessor") {
327 else if(class_name ==
"AVXThresholdProcessor") {
330 else if(class_name ==
"CRTBernReaderConf") {
333 else if(class_name ==
"CRTBernReaderModule") {
336 else if(class_name ==
"CRTGrenobleReaderConf") {
339 else if(class_name ==
"CRTGrenobleReaderModule") {
342 else if(class_name ==
"CRTReaderApplication") {
345 else if(class_name ==
"CTBApplication") {
348 else if(class_name ==
"CTBCRTSubsystem") {
351 else if(class_name ==
"CTBCalibrationStream") {
354 else if(class_name ==
"CTBConf") {
357 else if(class_name ==
"CTBCountLLT") {
360 else if(class_name ==
"CTBHLT") {
363 else if(class_name ==
"CTBLLT") {
366 else if(class_name ==
"CTBMisc") {
369 else if(class_name ==
"CTBModule") {
372 else if(class_name ==
"CTBMonitorSocket") {
375 else if(class_name ==
"CTBPDSLLT") {
378 else if(class_name ==
"CTBPDSSubsystem") {
381 else if(class_name ==
"CTBPulser") {
384 else if(class_name ==
"CTBRandomTrigger") {
387 else if(class_name ==
"CTBReceiverSocket") {
390 else if(class_name ==
"CTBSocket") {
393 else if(class_name ==
"CTBSockets") {
396 else if(class_name ==
"CTBStatisticsSocket") {
399 else if(class_name ==
"CTBSubsystem") {
402 else if(class_name ==
"CTBTiming") {
405 else if(class_name ==
"CTBTrigger") {
408 else if(class_name ==
"CTBTriggerReport") {
411 else if(class_name ==
"CTBoardConf") {
414 else if(class_name ==
"ColdADCSettings") {
417 else if(class_name ==
"DFApplication") {
420 else if(class_name ==
"DFHWConf") {
423 else if(class_name ==
"DFOApplication") {
426 else if(class_name ==
"DFOConf") {
429 else if(class_name ==
"DFOModule") {
432 else if(class_name ==
"DPDKPortConfiguration") {
435 else if(class_name ==
"DPDKReaderConf") {
438 else if(class_name ==
"DPDKReaderModule") {
441 else if(class_name ==
"DPDKReceiver") {
444 else if(class_name ==
"DTSHSIApplication") {
447 else if(class_name ==
"DaphneApplication") {
450 else if(class_name ==
"DaphneConf") {
453 else if(class_name ==
"DaphneV2ADC") {
456 else if(class_name ==
"DaphneV2AFE") {
459 else if(class_name ==
"DaphneV2BoardConf") {
462 else if(class_name ==
"DaphneV2Channel") {
465 else if(class_name ==
"DaphneV2ControllerModule") {
468 else if(class_name ==
"DaphneV2LNA") {
471 else if(class_name ==
"DaphneV2PGA") {
474 else if(class_name ==
"DataHandlerConf") {
477 else if(class_name ==
"DataHandlerModule") {
480 else if(class_name ==
"DataProcessor") {
483 else if(class_name ==
"DataReaderConf") {
486 else if(class_name ==
"DataReaderModule") {
489 else if(class_name ==
"DataRecorderConf") {
492 else if(class_name ==
"DataRecorderModule") {
495 else if(class_name ==
"DataStoreConf") {
498 else if(class_name ==
"DataSubscriberModule") {
501 else if(class_name ==
"DataWriterConf") {
504 else if(class_name ==
"DataWriterModule") {
507 else if(class_name ==
"FDDataHandlerModule") {
510 else if(class_name ==
"FDFakeReaderModule") {
513 else if(class_name ==
"FEMBSettings") {
516 else if(class_name ==
"FakeDataApplication") {
519 else if(class_name ==
"FakeDataProdConf") {
522 else if(class_name ==
"FakeDataProdModule") {
525 else if(class_name ==
"FakeDataReceiver") {
528 else if(class_name ==
"FakeDataSender") {
531 else if(class_name ==
"FakeHSIApplication") {
534 else if(class_name ==
"FakeHSIEventGeneratorConf") {
537 else if(class_name ==
"FakeHSIEventGeneratorModule") {
540 else if(class_name ==
"FelixCardControllerModule") {
543 else if(class_name ==
"FelixDataReceiver") {
546 else if(class_name ==
"FelixDataSender") {
549 else if(class_name ==
"FelixInterface") {
552 else if(class_name ==
"FelixReaderConf") {
555 else if(class_name ==
"FelixReaderModule") {
558 else if(class_name ==
"FilenameParams") {
561 else if(class_name ==
"FragmentAggregatorModule") {
564 else if(class_name ==
"HDF5FileLayoutParams") {
567 else if(class_name ==
"HDF5PathParams") {
570 else if(class_name ==
"HSI2TCTranslatorConf") {
573 else if(class_name ==
"HSIDataHandlerModule") {
576 else if(class_name ==
"HSIEventSender") {
579 else if(class_name ==
"HSIEventToTCApplication") {
582 else if(class_name ==
"HSIFrameProcessor") {
585 else if(class_name ==
"HSIReadout") {
588 else if(class_name ==
"HSIReadoutConf") {
591 else if(class_name ==
"HSISignalWindow") {
594 else if(class_name ==
"HermesDataSender") {
597 else if(class_name ==
"HermesModule") {
600 else if(class_name ==
"HermesModuleConf") {
603 else if(class_name ==
"IpbusAddressTable") {
606 else if(class_name ==
"IpbusDevice") {
609 else if(class_name ==
"LatencyBuffer") {
612 else if(class_name ==
"MLTApplication") {
615 else if(class_name ==
"MLTConf") {
618 else if(class_name ==
"MLTModule") {
621 else if(class_name ==
"NICStatsConf") {
624 else if(class_name ==
"NP02ReadoutApplication") {
627 else if(class_name ==
"NWDetDataReceiver") {
630 else if(class_name ==
"NWDetDataSender") {
633 else if(class_name ==
"NetworkConnectionDescriptor") {
636 else if(class_name ==
"NetworkConnectionRule") {
639 else if(class_name ==
"ProcessingStep") {
642 else if(class_name ==
"QueueConnectionRule") {
645 else if(class_name ==
"QueueDescriptor") {
648 else if(class_name ==
"ROIGroupConf") {
651 else if(class_name ==
"RandomTCMakerConf") {
654 else if(class_name ==
"RandomTCMakerModule") {
657 else if(class_name ==
"RawDataProcessor") {
660 else if(class_name ==
"ReadoutApplication") {
663 else if(class_name ==
"ReadoutHost") {
666 else if(class_name ==
"RequestHandler") {
669 else if(class_name ==
"RoHwConfig") {
672 else if(class_name ==
"SSPLEDCalibModule") {
675 else if(class_name ==
"SSPRegister") {
678 else if(class_name ==
"SamplesOverThresholdMinima") {
681 else if(class_name ==
"SmartDaqApplication") {
684 else if(class_name ==
"SocketDataSender") {
687 else if(class_name ==
"SocketDataWriterConf") {
690 else if(class_name ==
"SocketDataWriterModule") {
693 else if(class_name ==
"SocketReaderConf") {
696 else if(class_name ==
"SocketReaderModule") {
699 else if(class_name ==
"SocketReceiver") {
702 else if(class_name ==
"SocketWriterConf") {
705 else if(class_name ==
"SocketWriterModule") {
708 else if(class_name ==
"SourceIDConf") {
711 else if(class_name ==
"SourceIDToNetworkConnection") {
714 else if(class_name ==
"StandaloneTCMakerConf") {
717 else if(class_name ==
"StandaloneTCMakerModule") {
720 else if(class_name ==
"StreamEmulationParameters") {
723 else if(class_name ==
"SubdetectorReadoutWindowMap") {
726 else if(class_name ==
"TAAlgorithm") {
729 else if(class_name ==
"TADataProcessor") {
732 else if(class_name ==
"TAMakerADCSimpleWindowAlgorithm") {
735 else if(class_name ==
"TAMakerBundleNAlgorithm") {
738 else if(class_name ==
"TAMakerChannelAdjacencyAlgorithm") {
741 else if(class_name ==
"TAMakerChannelDistanceAlgorithm") {
744 else if(class_name ==
"TAMakerDBSCANAlgorithm") {
747 else if(class_name ==
"TAMakerHorizontalMuonAlgorithm") {
750 else if(class_name ==
"TAMakerMichelElectronAlgorithm") {
753 else if(class_name ==
"TAMakerPlaneCoincidenceAlgorithm") {
756 else if(class_name ==
"TAMakerPrescaleAlgorithm") {
759 else if(class_name ==
"TCAlgorithm") {
762 else if(class_name ==
"TCDataProcessor") {
765 else if(class_name ==
"TCMakerADCSimpleWindowAlgorithm") {
768 else if(class_name ==
"TCMakerBundleNAlgorithm") {
771 else if(class_name ==
"TCMakerChannelAdjacencyAlgorithm") {
774 else if(class_name ==
"TCMakerChannelDistanceAlgorithm") {
777 else if(class_name ==
"TCMakerDBSCANAlgorithm") {
780 else if(class_name ==
"TCMakerHorizontalMuonAlgorithm") {
783 else if(class_name ==
"TCMakerMichelElectronAlgorithm") {
786 else if(class_name ==
"TCMakerPlaneCoincidenceAlgorithm") {
789 else if(class_name ==
"TCMakerPrescaleAlgorithm") {
792 else if(class_name ==
"TCReadoutMap") {
795 else if(class_name ==
"TDEAMCModule") {
798 else if(class_name ==
"TDEAMCModuleConf") {
801 else if(class_name ==
"TDECrateApplication") {
804 else if(class_name ==
"TPDataProcessor") {
807 else if(class_name ==
"TPReplayApplication") {
810 else if(class_name ==
"TPReplayModule") {
813 else if(class_name ==
"TPReplayModuleConf") {
816 else if(class_name ==
"TPStreamConf") {
819 else if(class_name ==
"TPStreamWriterApplication") {
822 else if(class_name ==
"TPStreamWriterConf") {
825 else if(class_name ==
"TPStreamWriterModule") {
828 else if(class_name ==
"TRBConf") {
831 else if(class_name ==
"TRBModule") {
834 else if(class_name ==
"TdeAmcDetDataSender") {
837 else if(class_name ==
"TriggerApplication") {
840 else if(class_name ==
"TriggerBitword") {
843 else if(class_name ==
"TriggerDataHandlerModule") {
846 else if(class_name ==
"WIBModule") {
849 else if(class_name ==
"WIBModuleConf") {
852 else if(class_name ==
"WIBPulserSettings") {
855 else if(class_name ==
"WIBSettings") {
858 else if(class_name ==
"WIECApplication") {
862 std::cerr <<
"ERROR: do not know how to dump object of " << class_name <<
" class\n";
863 return (EXIT_FAILURE);
867 catch (dunedaq::conffwk::Exception & ex) {
868 std::cerr <<
"Caught " << ex << std::endl;
869 return (EXIT_FAILURE);