DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
dbe
src
internal
messenger.cpp
Go to the documentation of this file.
1
// DUNE DAQ modification notice:
2
// This file has been modified from the original ATLAS dbe source for the DUNE DAQ project.
3
// Fork baseline commit: dbe-02-12-17 (2022-05-12).
4
// Renamed since fork: no.
5
6
/*
7
* messenger.cpp
8
*
9
* Created on: Nov 3, 2015
10
* Author: Leonidas Georgopoulos
11
*/
12
13
#include "
logging/Logging.hpp
"
14
15
#include "
dbe/messenger.hpp
"
16
#include "
dbe/messenger_proxy.hpp
"
17
18
#include <map>
19
#include <cassert>
20
21
namespace
dbe
22
{
23
namespace
interface
24
{
25
namespace
messenger
26
{
27
28
//------------------------------------------------------------------------------------------
29
msglevels::t_str
const
msglevels::debug
=
"DEBUG"
;
30
msglevels::t_str
const
msglevels::info
=
"INFO"
;
31
msglevels::t_str
const
msglevels::note
=
"NOTE"
;
32
msglevels::t_str
const
msglevels::warn
=
"WARN"
;
33
msglevels::t_str
const
msglevels::error
=
"ERROR"
;
34
msglevels::t_str
const
msglevels::fail
=
"FAIL"
;
35
36
msglevels::t_levels
const
msglevels::all_levels
= {
debug
,
info
, note, warn,
error
, fail};
37
// provides codes from message level type ( level -> code )
38
static
std::map<qt::t_str const, messages const>
codes
=
39
{
40
{
msglevels::info
,
messages::DEBUG
},
41
{
msglevels::info
,
messages::INFO
},
42
{
msglevels::note
,
messages::NOTE
},
43
{
msglevels::warn
,
messages::WARN
},
44
{
msglevels::error
,
messages::ERROR
},
45
{
msglevels::fail
,
messages::FAIL
}
46
};
47
48
// provides level types from code ( code->level)
49
static
std::map<messages const, qt::t_str const>
levels
=
50
{
51
{
messages::DEBUG
,
msglevels::debug
},
52
{
messages::INFO
,
msglevels::info
},
53
{
messages::NOTE
,
msglevels::note
},
54
{
messages::WARN
,
msglevels::warn
},
55
{
messages::ERROR
,
msglevels::error
},
56
{
messages::FAIL
,
msglevels::fail
}
57
};
58
59
// provides titles from level types
60
static
std::map<qt::t_str const, qt::t_str const>
titles
=
61
{
62
{
msglevels::debug
,
"Debug info"
},
63
{
msglevels::info
,
"Information"
},
64
{
msglevels::note
,
"Notice"
},
65
{
msglevels::warn
,
"Warning"
},
66
{
msglevels::error
,
"Error"
},
67
{
msglevels::fail
,
"Failure"
}
68
};
69
70
std::mutex
qt::m_block
;
71
std::atomic<bool>
qt::m_batch_mode
(
false
);
72
qt::t_batches
qt::m_batches
;
73
//------------------------------------------------------------------------------------------
74
75
//------------------------------------------------------------------------------------------
76
qt::post_ret_type
qt::post
(
t_str
const
& m,
t_str
const
& l )
77
{
78
std::lock_guard<std::mutex> lock (
m_block
);
79
80
if
(
m_batch_mode
)
81
{
82
merge_post
( m, l );
83
}
84
else
85
{
86
direct_post
( m, l );
87
}
88
}
89
//------------------------------------------------------------------------------------------
90
91
//------------------------------------------------------------------------------------------
92
qt::post_ret_type
qt::direct_post
(
t_str
const
& m,
t_str
const
& l )
93
{
94
if
(
warn
== l )
95
{
96
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::WARN
) << m ;
97
messenger_proxy::ref
().
warn
(
titles
[
warn
], m );
98
}
99
else
if
(
error
== l )
100
{
101
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::ERROR
) << m ;
102
messenger_proxy::ref
().
error
(
titles
[
error
], m );
103
}
104
else
if
(
info
== l )
105
{
106
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::INFO
) << m ;
107
messenger_proxy::ref
().
info
(
titles
[
info
], m );
108
}
109
else
if
(
fail
== l )
110
{
111
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::FAIL
) << m ;
112
messenger_proxy::ref
().
fail
(
titles
[
fail
], m );
113
}
114
else
if
(
note
== l )
115
{
116
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::NOTE
) << m ;
117
messenger_proxy::ref
().
fail
(
titles
[
note
], m );
118
}
119
else
if
(
debug
== l )
120
{
121
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::DEBUG
) << m ;
122
messenger_proxy::ref
().
fail
(
titles
[
debug
], m );
123
}
124
}
125
//------------------------------------------------------------------------------------------
126
127
//------------------------------------------------------------------------------------------
128
qt::post_ret_type
qt::merge_post
(
t_str
const
& m,
t_str
const
& l )
129
{
130
auto
codeit =
codes
.find ( l );
131
assert ( codeit !=
codes
.end() );
132
m_batches
[
static_cast<
int
>
( codeit->second )].insert ( m );
133
}
134
//------------------------------------------------------------------------------------------
135
136
//------------------------------------------------------------------------------------------
137
void
qt::purge
()
138
{
139
for
(
auto
clevel =
m_batches
.begin(); clevel !=
m_batches
.end(); ++clevel )
140
{
141
if
( not clevel->empty() )
142
{
143
t_str
merged (
"Summary of messages during batch mode"
);
144
145
for
(
auto
it = clevel->begin(); it != clevel->end(); ) {
146
auto
cnt = clevel->count(*it);
147
148
t_str
cmessage = *it;
149
merged +=
t_str
(
"\n\n"
) + cmessage +
t_str
(
"\n\n #Occurances="
) + std::to_string(cnt);
150
151
std::advance(it, cnt);
152
}
153
154
direct_post
( merged,
levels
[
static_cast<
messages
>
( clevel -
m_batches
.begin() )] );
155
clevel->clear();
156
}
157
}
158
}
159
//------------------------------------------------------------------------------------------
160
161
//------------------------------------------------------------------------------------------
162
std::unique_ptr<batch_guard>
qt::batchmode
()
163
{
164
return
std::unique_ptr<batch_guard> (
new
batch_guard
() );
165
}
166
//------------------------------------------------------------------------------------------
167
168
//------------------------------------------------------------------------------------------
169
batch_guard::~batch_guard
()
170
{
171
qt::m_batch_mode
=
false
;
172
qt::purge
();
173
}
174
//------------------------------------------------------------------------------------------
175
176
//------------------------------------------------------------------------------------------
177
batch_guard::batch_guard
()
178
{
179
qt::m_batch_mode
=
true
;
180
}
181
//------------------------------------------------------------------------------------------
182
183
}
// namespace messenger
184
}
/* namespace interface */
185
}
/* namespace dbe */
dbe::interface::messenger::qt::m_batch_mode
static std::atomic< bool > m_batch_mode
Definition
messenger.hpp:220
dbe::interface::messenger::qt::m_batches
static t_batches m_batches
Definition
messenger.hpp:224
dbe::interface::messenger::qt::purge
static void purge()
Definition
messenger.cpp:137
dbe::interface::messenger::qt::batchmode
static std::unique_ptr< batch_guard > batchmode()
Definition
messenger.cpp:162
dbe::interface::messenger::qt::merge_post
static post_ret_type merge_post(t_str const &m, t_str const &l)
Definition
messenger.cpp:128
dbe::interface::messenger::qt::m_block
static std::mutex m_block
Definition
messenger.hpp:219
dbe::interface::messenger::qt::t_str
std::string t_str
Definition
messenger.hpp:184
dbe::interface::messenger::qt::direct_post
static post_ret_type direct_post(t_str const &m, t_str const &l)
Definition
messenger.cpp:92
dbe::interface::messenger::qt::batch_guard
friend class batch_guard
Definition
messenger.hpp:182
dbe::interface::messenger::qt::post
static HAS_POST post_ret_type post(t_str const &, t_str const &)
Definition
messenger.cpp:76
dbe::interface::messenger::qt::t_batches
std::array< t_message_bucket, static_cast< int >(messages::sizeme) > t_batches
Definition
messenger.hpp:223
dbe::interface::messenger_proxy::fail
void fail(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:53
dbe::interface::messenger_proxy::ref
static messenger_proxy & ref()
Definition
messenger_proxy.cpp:22
dbe::interface::messenger_proxy::info
void info(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:33
dbe::interface::messenger_proxy::warn
void warn(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:43
dbe::interface::messenger_proxy::error
void error(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:48
Logging.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
messenger.hpp
messenger_proxy.hpp
dbe::interface::messenger
Definition
messenger.hpp:145
dbe::interface::messenger::messages
messages
Definition
messenger.hpp:147
dbe::interface::messenger::messages::NOTE
@ NOTE
Definition
messenger.hpp:150
dbe::interface::messenger::messages::WARN
@ WARN
Definition
messenger.hpp:151
dbe::interface::messenger::messages::INFO
@ INFO
Definition
messenger.hpp:149
dbe::interface::messenger::messages::ERROR
@ ERROR
Definition
messenger.hpp:152
dbe::interface::messenger::messages::FAIL
@ FAIL
Definition
messenger.hpp:153
dbe::interface::messenger::messages::DEBUG
@ DEBUG
Definition
messenger.hpp:148
dbe::interface::messenger::titles
static std::map< qt::t_str const, qt::t_str const > titles
Definition
messenger.cpp:60
dbe::interface::messenger::codes
static std::map< qt::t_str const, messages const > codes
Definition
messenger.cpp:38
dbe::interface::messenger::levels
static std::map< messages const, qt::t_str const > levels
Definition
messenger.cpp:49
dbe::interface
Definition
messenger.hpp:143
dbe
Include QT Headers.
Definition
BatchChangeWidget.hpp:18
hdf5_wibeth_to_binary.debug
debug
Definition
hdf5_wibeth_to_binary.py:81
readout-affinity.info
str info
Definition
readout-affinity.py:10
dbe::interface::messenger::batch_guard::batch_guard
batch_guard()
Definition
messenger.cpp:177
dbe::interface::messenger::batch_guard::~batch_guard
~batch_guard()
Definition
messenger.cpp:169
dbe::interface::messenger::msglevels::t_levels
std::vector< t_str > t_levels
Definition
messenger.hpp:170
dbe::interface::messenger::msglevels::warn
static t_str const warn
Definition
messenger.hpp:171
dbe::interface::messenger::msglevels::t_str
std::string t_str
Definition
messenger.hpp:169
dbe::interface::messenger::msglevels::note
static t_str const note
Definition
messenger.hpp:171
dbe::interface::messenger::msglevels::fail
static t_str const fail
Definition
messenger.hpp:171
dbe::interface::messenger::msglevels::info
static t_str const info
Definition
messenger.hpp:171
dbe::interface::messenger::msglevels::error
static t_str const error
Definition
messenger.hpp:171
dbe::interface::messenger::msglevels::debug
static t_str const debug
Definition
messenger.hpp:171
dbe::interface::messenger::msglevels::all_levels
static t_levels const all_levels
Definition
messenger.hpp:172
error
Factory couldn t std::string alg_name Invalid configuration error
Definition
Issues.hpp:34
Generated on
for DUNE-DAQ by
1.17.0