DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
confmodel
apps
list_apps.cxx
Go to the documentation of this file.
1
#include "
logging/Logging.hpp
"
2
3
#include "
conffwk/Configuration.hpp
"
4
5
#include "
confmodel/DaqApplication.hpp
"
6
#include "
confmodel/DaqModule.hpp
"
7
#include "
confmodel/ResourceSet.hpp
"
8
#include "
confmodel/Segment.hpp
"
9
#include "
confmodel/Session.hpp
"
10
11
#include <iostream>
12
//#include <set>
13
#include <string>
14
15
using namespace
dunedaq
;
16
using namespace
dunedaq::confmodel
;
17
18
19
void
process_segment
(
const
Session
*
session
,
20
const
Segment
* segment,
21
const
std::set<std::string>& disabled_objects,
22
std::string spacer) {
23
std::cout << spacer <<
"Segment "
<< segment->
UID
();
24
bool
segment_disabled = segment->
is_disabled
(*
session
);
25
std::string reason =
""
;
26
if
(segment_disabled) {
27
std::cout <<
" disabled"
;
28
reason =
"segment"
;
29
}
30
std::cout <<
"\n"
;
31
for
(
auto
subseg : segment->
get_segments
()) {
32
process_segment
(
session
, subseg, disabled_objects, spacer+
" "
);
33
}
34
35
for
(
auto
app : segment->
get_applications
()) {
36
bool
disabled = segment_disabled;
37
std::cout << spacer <<
" Application: "
<< app->UID();
38
if
(!disabled) {
39
auto
rset = app->cast<
ResourceSet
>();
40
if
(rset) {
41
if
(rset->is_disabled(*
session
)) {
42
disabled =
true
;
43
if
(disabled_objects.find(app->UID()) != disabled_objects.end()) {
44
reason =
"directly"
;
45
}
46
else
{
47
reason =
"due to state of related objects"
;
48
}
49
}
50
std::cout <<
" contains: {"
;
51
std::string seperator =
""
;
52
for
(
auto
mod : rset->contained_resources()) {
53
std::cout << seperator << mod->UID();
54
if
(mod->is_disabled(*
session
)) {
55
std::cout <<
"<disabled "
;
56
if
(disabled_objects.find(mod->UID()) == disabled_objects.end()) {
57
std::cout <<
"in"
;
58
}
59
std::cout <<
"directly>"
;
60
}
61
seperator =
", "
;
62
}
63
std::cout <<
"}"
;
64
}
65
}
66
if
(disabled) {
67
std::cout <<
" <disabled "
<< reason <<
">"
;
68
}
69
auto
daqApp = app->cast<
DaqApplication
>();
70
if
(daqApp) {
71
std::cout <<
" Modules:"
;
72
for
(
auto
mod : daqApp->get_modules()) {
73
std::cout <<
" "
<< mod->UID();
74
}
75
}
76
77
std::cout << std::endl;
78
}
79
}
80
81
int
main
(
int
argc,
char
* argv[]) {
82
83
if
(argc < 2) {
84
std::cout <<
"Usage: "
<< argv[0] <<
" [session] database-file\n"
;
85
return
0;
86
}
87
88
int
filearg = 1;
89
if
(argc == 3) {
90
filearg = 2;
91
}
92
std::string confimpl =
"oksconflibs:"
+ std::string(argv[filearg]);
93
auto
confdb =
new
conffwk::Configuration
(confimpl);
94
95
std::vector<std::string> sessionList;
96
if
(argc == 3) {
97
sessionList.emplace_back(std::string(argv[1]));
98
}
99
else
{
100
std::vector<conffwk::ConfigObject> session_obj;
101
confdb->get(
"Session"
, session_obj);
102
if
(session_obj.size() == 0) {
103
std::cerr <<
"Can't find any Sessions in database\n"
;
104
return
-1;
105
}
106
for
(
auto
obj
: session_obj) {
107
sessionList.push_back(
obj
.UID());
108
}
109
}
110
dunedaq::logging::Logging::setup
(sessionList[0],
"list-apps"
111
);
112
113
std::string separator{};
114
for
(
const
auto
& sessionName : sessionList) {
115
const
Session
*
session
;
116
session
= confdb->get<
Session
>(sessionName);
117
if
(
session
==
nullptr
) {
118
std::cerr <<
"Session "
<< sessionName <<
" not found in database\n"
;
119
return
-1;
120
}
121
122
std::cout << separator <<
" Applications in Session: "
123
<< sessionName <<
"\n"
;
124
std::set<std::string> disabled_objects;
125
for
(
auto
object
:
session
->get_disabled()) {
126
TLOG_DEBUG
(11) <<
object
->UID() <<
" is in disabled list of Session"
;
127
disabled_objects.insert(object->UID());
128
}
129
130
process_segment
(
session
,
session
->get_segment(),
131
disabled_objects,
132
""
);
133
separator =
134
"\n ----------------------------------------------\n\n"
;
135
}
136
delete
confdb;
137
}
dunedaq::conffwk::DalObject::UID
const std::string & UID() const noexcept
Definition
DalObject.hpp:135
dunedaq::confmodel::DaqApplication
Definition
DaqApplication.hpp:39
dunedaq::confmodel::ResourceSet
Definition
ResourceSet.hpp:27
dunedaq::confmodel::Resource::is_disabled
bool is_disabled(const dunedaq::confmodel::ResourceTree &session) const
Definition
dalMethods.cpp:423
dunedaq::confmodel::Segment
Definition
Segment.hpp:37
dunedaq::confmodel::Segment::get_segments
const std::vector< const dunedaq::confmodel::Segment * > & get_segments() const
Get "segments" relationship value. Nested list of Segments that form part of this Segment.
Definition
Segment.hpp:114
dunedaq::confmodel::Segment::get_applications
const std::vector< const dunedaq::confmodel::Application * > & get_applications() const
Get "applications" relationship value. List of Applications that run in this Segment.
Definition
Segment.hpp:141
dunedaq::confmodel::Session
Definition
Session.hpp:42
dunedaq::logging::Logging::setup
static void setup(const std::string &session, const std::string &application)
Setup the Logger service Currently no args.
Definition
Logging.hpp:32
Configuration.hpp
conffwk entry point
DaqApplication.hpp
DaqModule.hpp
ResourceSet.hpp
Segment.hpp
Session.hpp
main
int main(int argc, char *argv[])
Definition
list_apps.cxx:81
process_segment
void process_segment(const Session *session, const Segment *segment, const std::set< std::string > &disabled_objects, std::string spacer)
Definition
list_apps.cxx:19
Logging.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
conffwk.Configuration
Definition
Configuration.py:1
dunedaq::confmodel
Definition
DisabledResources.hpp:10
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::obj
msgpack::object obj
Definition
Serialization.hpp:257
session
Definition
session.py:1
Generated on
for DUNE-DAQ by
1.17.0