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 <cassert>
19
#include <map>
20
21
namespace
dbe
{
22
namespace
interface
{
23
namespace
messenger
{
24
25
//------------------------------------------------------------------------------------------
26
msglevels::t_str
const
msglevels::debug
=
"DEBUG"
;
27
msglevels::t_str
const
msglevels::info
=
"INFO"
;
28
msglevels::t_str
const
msglevels::note
=
"NOTE"
;
29
msglevels::t_str
const
msglevels::warn
=
"WARN"
;
30
msglevels::t_str
const
msglevels::error
=
"ERROR"
;
31
msglevels::t_str
const
msglevels::fail
=
"FAIL"
;
32
33
msglevels::t_levels
const
msglevels::all_levels
= {
debug
,
info
, note, warn,
error
, fail };
34
// provides codes from message level type ( level -> code )
35
static
std::map<qt::t_str const, messages const>
codes
= {
36
{
msglevels::info
,
messages::DEBUG
}, {
msglevels::info
,
messages::INFO
}, {
msglevels::note
,
messages::NOTE
},
37
{
msglevels::warn
,
messages::WARN
}, {
msglevels::error
,
messages::ERROR
}, {
msglevels::fail
,
messages::FAIL
}
38
};
39
40
// provides level types from code ( code->level)
41
static
std::map<messages const, qt::t_str const>
levels
= {
42
{
messages::DEBUG
,
msglevels::debug
}, {
messages::INFO
,
msglevels::info
}, {
messages::NOTE
,
msglevels::note
},
43
{
messages::WARN
,
msglevels::warn
}, {
messages::ERROR
,
msglevels::error
}, {
messages::FAIL
,
msglevels::fail
}
44
};
45
46
// provides titles from level types
47
static
std::map<qt::t_str const, qt::t_str const>
titles
= {
48
{
msglevels::debug
,
"Debug info"
}, {
msglevels::info
,
"Information"
}, {
msglevels::note
,
"Notice"
},
49
{
msglevels::warn
,
"Warning"
}, {
msglevels::error
,
"Error"
}, {
msglevels::fail
,
"Failure"
}
50
};
51
52
std::mutex
qt::m_block
;
53
std::atomic<bool>
qt::m_batch_mode
(
false
);
54
qt::t_batches
qt::m_batches
;
55
//------------------------------------------------------------------------------------------
56
57
//------------------------------------------------------------------------------------------
58
qt::post_ret_type
59
qt::post
(
t_str
const
& m,
t_str
const
& l)
60
{
61
std::lock_guard<std::mutex> lock(
m_block
);
62
63
if
(
m_batch_mode
) {
64
merge_post
(m, l);
65
}
else
{
66
direct_post
(m, l);
67
}
68
}
69
//------------------------------------------------------------------------------------------
70
71
//------------------------------------------------------------------------------------------
72
qt::post_ret_type
73
qt::direct_post
(
t_str
const
& m,
t_str
const
& l)
74
{
75
if
(
warn
== l) {
76
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::WARN
) << m;
77
messenger_proxy::ref
().
warn
(
titles
[
warn
], m);
78
}
else
if
(
error
== l) {
79
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::ERROR
) << m;
80
messenger_proxy::ref
().
error
(
titles
[
error
], m);
81
}
else
if
(
info
== l) {
82
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::INFO
) << m;
83
messenger_proxy::ref
().
info
(
titles
[
info
], m);
84
}
else
if
(
fail
== l) {
85
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::FAIL
) << m;
86
messenger_proxy::ref
().
fail
(
titles
[
fail
], m);
87
}
else
if
(
note
== l) {
88
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::NOTE
) << m;
89
messenger_proxy::ref
().
fail
(
titles
[
note
], m);
90
}
else
if
(
debug
== l) {
91
TLOG_DEBUG
(0) <<
static_cast<
int
>
(
messages::DEBUG
) << m;
92
messenger_proxy::ref
().
fail
(
titles
[
debug
], m);
93
}
94
}
95
//------------------------------------------------------------------------------------------
96
97
//------------------------------------------------------------------------------------------
98
qt::post_ret_type
99
qt::merge_post
(
t_str
const
& m,
t_str
const
& l)
100
{
101
auto
codeit =
codes
.find(l);
102
assert(codeit !=
codes
.end());
103
m_batches
[
static_cast<
int
>
(codeit->second)].insert(m);
104
}
105
//------------------------------------------------------------------------------------------
106
107
//------------------------------------------------------------------------------------------
108
void
109
qt::purge
()
110
{
111
for
(
auto
clevel =
m_batches
.begin(); clevel !=
m_batches
.end(); ++clevel) {
112
if
(not clevel->empty()) {
113
t_str
merged(
"Summary of messages during batch mode"
);
114
115
for
(
auto
it = clevel->begin(); it != clevel->end();) {
116
auto
cnt = clevel->count(*it);
117
118
t_str
cmessage = *it;
119
merged +=
t_str
(
"\n\n"
) + cmessage +
t_str
(
"\n\n #Occurances="
) + std::to_string(cnt);
120
121
std::advance(it, cnt);
122
}
123
124
direct_post
(merged,
levels
[
static_cast<
messages
>
(clevel -
m_batches
.begin())]);
125
clevel->clear();
126
}
127
}
128
}
129
//------------------------------------------------------------------------------------------
130
131
//------------------------------------------------------------------------------------------
132
std::unique_ptr<batch_guard>
133
qt::batchmode
()
134
{
135
return
std::unique_ptr<batch_guard>(
new
batch_guard
());
136
}
137
//------------------------------------------------------------------------------------------
138
139
//------------------------------------------------------------------------------------------
140
batch_guard::~batch_guard
()
141
{
142
qt::m_batch_mode
=
false
;
143
qt::purge
();
144
}
145
//------------------------------------------------------------------------------------------
146
147
//------------------------------------------------------------------------------------------
148
batch_guard::batch_guard
()
149
{
150
qt::m_batch_mode
=
true
;
151
}
152
//------------------------------------------------------------------------------------------
153
154
}
// namespace messenger
155
}
/* namespace interface */
156
}
/* namespace dbe */
dbe::interface::messenger::qt::m_batch_mode
static std::atomic< bool > m_batch_mode
Definition
messenger.hpp:214
dbe::interface::messenger::qt::m_batches
static t_batches m_batches
Definition
messenger.hpp:218
dbe::interface::messenger::qt::purge
static void purge()
Definition
messenger.cpp:109
dbe::interface::messenger::qt::batchmode
static std::unique_ptr< batch_guard > batchmode()
Definition
messenger.cpp:133
dbe::interface::messenger::qt::merge_post
static post_ret_type merge_post(t_str const &m, t_str const &l)
Definition
messenger.cpp:99
dbe::interface::messenger::qt::t_batches
std::array< t_message_bucket, static_cast< int >(messages::sizeme)> t_batches
Definition
messenger.hpp:217
dbe::interface::messenger::qt::m_block
static std::mutex m_block
Definition
messenger.hpp:213
dbe::interface::messenger::qt::t_str
std::string t_str
Definition
messenger.hpp:178
dbe::interface::messenger::qt::direct_post
static post_ret_type direct_post(t_str const &m, t_str const &l)
Definition
messenger.cpp:73
dbe::interface::messenger::qt::post
static HAS_POST post_ret_type post(t_str const &, t_str const &)
Definition
messenger.cpp:59
dbe::interface::messenger_proxy::fail
void fail(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:58
dbe::interface::messenger_proxy::ref
static messenger_proxy & ref()
Definition
messenger_proxy.cpp:21
dbe::interface::messenger_proxy::info
void info(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:34
dbe::interface::messenger_proxy::warn
void warn(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:46
dbe::interface::messenger_proxy::error
void error(t_extstr const &, t_extstr const &)
Definition
messenger_proxy.cpp:52
Logging.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:116
messenger.hpp
messenger_proxy.hpp
dbe::interface::messenger
Definition
messenger.hpp:138
dbe::interface::messenger::messages
messages
Definition
messenger.hpp:140
dbe::interface::messenger::messages::NOTE
@ NOTE
Definition
messenger.hpp:143
dbe::interface::messenger::messages::WARN
@ WARN
Definition
messenger.hpp:144
dbe::interface::messenger::messages::INFO
@ INFO
Definition
messenger.hpp:142
dbe::interface::messenger::messages::ERROR
@ ERROR
Definition
messenger.hpp:145
dbe::interface::messenger::messages::FAIL
@ FAIL
Definition
messenger.hpp:146
dbe::interface::messenger::messages::DEBUG
@ DEBUG
Definition
messenger.hpp:141
dbe::interface::messenger::titles
static std::map< qt::t_str const, qt::t_str const > titles
Definition
messenger.cpp:47
dbe::interface::messenger::codes
static std::map< qt::t_str const, messages const > codes
Definition
messenger.cpp:35
dbe::interface::messenger::levels
static std::map< messages const, qt::t_str const > levels
Definition
messenger.cpp:41
dbe::interface
Definition
messenger.hpp:137
dbe
Include QT Headers.
Definition
BatchChangeWidget.hpp:16
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:148
dbe::interface::messenger::batch_guard::~batch_guard
~batch_guard()
Definition
messenger.cpp:140
dbe::interface::messenger::msglevels::t_levels
std::vector< t_str > t_levels
Definition
messenger.hpp:164
dbe::interface::messenger::msglevels::warn
static t_str const warn
Definition
messenger.hpp:165
dbe::interface::messenger::msglevels::t_str
std::string t_str
Definition
messenger.hpp:163
dbe::interface::messenger::msglevels::note
static t_str const note
Definition
messenger.hpp:165
dbe::interface::messenger::msglevels::fail
static t_str const fail
Definition
messenger.hpp:165
dbe::interface::messenger::msglevels::info
static t_str const info
Definition
messenger.hpp:165
dbe::interface::messenger::msglevels::error
static t_str const error
Definition
messenger.hpp:165
dbe::interface::messenger::msglevels::debug
static t_str const debug
Definition
messenger.hpp:165
dbe::interface::messenger::msglevels::all_levels
static t_levels const all_levels
Definition
messenger.hpp:166
error
Factory couldn t std::string alg_name Invalid configuration error
Definition
Issues.hpp:34
Generated on
for DUNE-DAQ by
1.18.0