DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
dbe
include
dbe
messenger.hpp
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: yes (from dbe/messenger.h to include/dbe/messenger.hpp).
5
6
/*
7
* messenger.h
8
*
9
* Created on: Nov 3, 2015
10
* Author: lgeorgop
11
*/
12
13
#ifndef DBE_MESSENGER_H_
14
#define DBE_MESSENGER_H_
15
16
#include "
dbe/macro.hpp
"
17
#include "
dbe/msghandler.hpp
"
18
19
#include <string>
20
#include <memory>
21
#include <mutex>
22
#include <unordered_set>
23
#include <array>
24
#include <atomic>
25
26
#ifndef t_messenger
27
#define t_messenger dbe::interface::messenger::qt
28
#endif
29
30
#ifndef t_msghandler
31
#define t_msghandler ::lutils::program::msghandler<t_messenger>
32
#endif
33
34
#define MESSAGE(...) VA_SELECT(MESSAGE,__VA_ARGS__)
35
36
#define MSEP " "
37
38
#ifndef MESSAGE_STATICS
39
#define MESSAGE_STATICS(msg) \
40
static t_msghandler::t_str sms(msg); \
41
static t_msghandler::t_str smsr("\n\nReason: "); \
42
43
#endif
44
45
#define MESSAGE_3(level,msg,reason) \
46
{\
47
MESSAGE_STATICS(msg) \
48
t_msghandler::ref().message( level, sms + smsr + MSEP +reason); \
49
}\
50
51
#define MESSAGE_4(level,msg,reason,_1) \
52
{\
53
MESSAGE_STATICS(msg) \
54
t_msghandler::ref().message( level, sms + MSEP + _1 + smsr + MSEP + reason); \
55
}\
56
57
#define MESSAGE_5(level,msg,reason,_1,_2) \
58
{\
59
MESSAGE_STATICS(msg) \
60
t_msghandler::ref().message( level, \
61
sms + MSEP + _1 + MSEP + _2 + smsr +MSEP+ reason); \
62
}\
63
64
#define MESSAGE_6(level,msg,reason,_1,_2,_3) \
65
{\
66
MESSAGE_STATICS(msg) \
67
t_msghandler::ref().message( level, \
68
sms + MSEP + _1 + MSEP + _2 + MSEP + _3 + smsr +MSEP + reason); \
69
}\
70
71
#define MESSAGE_7(level,msg,reason,_1,_2,_3,_4) \
72
{\
73
MESSAGE_STATICS(msg) \
74
t_msghandler::ref().message( level,\
75
sms + MSEP+_1 +MSEP+ _2 + MSEP +_3 + MSEP + _4 + smsr + MSEP + reason); \
76
}\
77
78
#define MSGHNDL_DEBUG_LEVEL t_messenger::debug
79
#define MSGHNDL_INFO_LEVEL t_messenger::info
80
#define MSGHNDL_NOTE_LEVEL t_messenger::note
81
#define MSGHNDL_WARN_LEVEL t_messenger::warn
82
#define MSGHNDL_ERROR_LEVEL t_messenger::error
83
#define MSGHNDL_FAIL_LEVEL t_messenger::fail
84
85
#define WARN(...) VA_SELECT(WARN,__VA_ARGS__)
86
87
#define WARN_2(msg,reason) MESSAGE_3(MSGHNDL_WARN_LEVEL,msg,reason)
88
#define WARN_3(msg,reason,var) MESSAGE_4(MSGHNDL_WARN_LEVEL,msg,reason,var)
89
#define WARN_4(msg,reason,var,_4) MESSAGE_5(MSGHNDL_WARN_LEVEL,msg,reason,var,_4)
90
#define WARN_5(msg,reason,var,_4,_5) MESSAGE_6(MSGHNDL_WARN_LEVEL,msg,reason,var,_4,_5)
91
#define WARN_6(msg,reason,var,_4,_5,_6) MESSAGE_7(MSGHNDL_WARN_LEVEL,msg,reason,var,_4,_5,_6)
92
93
#define ERROR(...) VA_SELECT(ERROR,__VA_ARGS__)
94
95
#define ERROR_2(msg,reason) MESSAGE_3(MSGHNDL_ERROR_LEVEL,msg,reason)
96
#define ERROR_3(msg,reason,var) MESSAGE_4(MSGHNDL_ERROR_LEVEL,msg,reason,var)
97
#define ERROR_4(msg,reason,var,_4) MESSAGE_5(MSGHNDL_ERROR_LEVEL,msg,reason,var,_4)
98
#define ERROR_5(msg,reason,var,_4,_5) MESSAGE_6(MSGHNDL_ERROR_LEVEL,msg,reason,var,_4,_5)
99
#define ERROR_6(msg,reason,var,_4,_5,_6) MESSAGE_7(MSGHNDL_ERROR_LEVEL,msg,reason,var,_4,_5,_6)
100
101
#define INFO(...) VA_SELECT(INFO,__VA_ARGS__)
102
103
#define INFO_2(msg,reason) MESSAGE_3(MSGHNDL_INFO_LEVEL,msg,reason)
104
#define INFO_3(msg,reason,var) MESSAGE_4(MSGHNDL_INFO_LEVEL,msg,reason,var)
105
#define INFO_4(msg,reason,var,_4) MESSAGE_5(MSGHNDL_INFO_LEVEL,msg,reason,var,_4)
106
#define INFO_5(msg,reason,var,_4,_5) MESSAGE_6(MSGHNDL_INFO_LEVEL,msg,reason,var,_4,_5)
107
108
#define NOTE(...) VA_SELECT(NOTE,__VA_ARGS__)
109
110
#define NOTE_2(msg,reason) MESSAGE_3(MSGHNDL_NOTE_LEVEL,msg,reason)
111
#define NOTE_3(msg,reason,var) MESSAGE_4(MSGHNDL_NOTE_LEVEL,msg,reason,var)
112
#define NOTE_4(msg,reason,var,_4) MESSAGE_5(MSGHNDL_NOTE_LEVEL,msg,reason,var,_4)
113
#define NOTE_5(msg,reason,var,_4,_5) MESSAGE_6(MSGHNDL_NOTE_LEVEL,msg,reason,var,_4,_5)
114
115
116
#ifdef MSGHNDL_FULLDEBUG_INFORMATION
117
#define FULLDEBUG(...) VA_SELECT(DEBUG,__VA_ARGS__)
118
#else
119
#define FULLDEBUG(...)
120
#endif
121
122
#ifdef MSGHNDL_FULLDEBUG_INFORMATION
123
#define DEBUG(...) VA_SELECT(DEBUG,__VA_ARGS__)
124
#else
125
#define DEBUG(...)
126
#endif
127
128
#define DEBUG_2(msg,reason) MESSAGE_3(MSGHNDL_DEBUG_LEVEL,msg,reason)
129
#define DEBUG_3(msg,reason,var) MESSAGE_4(MSGHNDL_DEBUG_LEVEL,msg,reason,var)
130
#define DEBUG_4(msg,reason,var,_4) MESSAGE_5(MSGHNDL_DEBUG_LEVEL,msg,reason,var,_4)
131
#define DEBUG_5(msg,reason,var,_4,_5) MESSAGE_6(MSGHNDL_DEBUG_LEVEL,msg,reason,var,_4,_5)
132
133
#define FAIL(...) VA_SELECT(FAIL,__VA_ARGS__)
134
135
#define FAIL_2(msg,reason) MESSAGE_3(MSGHNDL_FAIL_LEVEL,msg,reason)
136
#define FAIL_3(msg,reason,var) MESSAGE_4(MSGHNDL_FAIL_LEVEL,msg,reason,var)
137
#define FAIL_4(msg,reason,var,_4) MESSAGE_5(MSGHNDL_FAIL_LEVEL,msg,reason,var,_4)
138
#define FAIL_5(msg,reason,var,_4,_5) MESSAGE_6(MSGHNDL_FAIL_LEVEL,msg,reason,var,_4,_5)
139
140
namespace
dbe
141
{
142
namespace
interface
143
{
144
namespace
messenger
145
{
146
enum class
messages
147
{
148
DEBUG
= 0,
149
INFO
,
150
NOTE
,
151
WARN
,
152
ERROR
,
153
FAIL
,
154
sizeme
155
};
156
157
class
qt;
158
159
struct
batch_guard
160
{
161
friend
class
qt
;
162
~batch_guard
();
163
private
:
164
batch_guard
();
165
};
166
167
struct
msglevels
168
{
169
typedef
std::string
t_str
;
170
typedef
std::vector<t_str>
t_levels
;
171
static
t_str
const
debug
,
info
,
note
,
warn
,
error
,
fail
;
172
static
t_levels
const
all_levels
;
173
};
174
179
class
qt
:
180
public
msglevels
181
{
182
friend
class
batch_guard
;
183
public
:
184
typedef
std::string
t_str
;
185
186
// used to inform at compile time msg handler that this class provides a post function
187
HAS_POST
188
196
static
post_ret_type
post
(
t_str
const
&,
t_str
const
& );
197
204
static
std::unique_ptr<batch_guard>
batchmode
();
205
206
private
:
207
qt
() =
delete
;
208
qt
(
qt
const
& ) =
delete
;
209
qt
operator=
(
qt
const
& ) =
delete
;
210
211
static
post_ret_type
direct_post
(
t_str
const
& m,
t_str
const
& l );
212
static
post_ret_type
merge_post
(
t_str
const
& m,
t_str
const
& l );
213
217
static
void
purge
();
218
219
static
std::mutex
m_block
;
220
static
std::atomic<bool>
m_batch_mode
;
221
222
typedef
std::unordered_multiset<t_str>
t_message_bucket
;
223
typedef
std::array<t_message_bucket, static_cast<int> (
messages::sizeme
) >
t_batches
;
224
static
t_batches
m_batches
;
225
};
226
227
class
console
:
228
public
msglevels
229
{
230
public
:
231
DEFAULT_POST
232
typedef
std::string
t_str
;
233
};
234
235
}
/* namespace messenger */
236
}
/* namespace interface */
237
}
/* namespace dbe */
238
239
#endif
/* DBE_MESSENGER_H_ */
dbe::interface::messenger::console
Definition
messenger.hpp:229
dbe::interface::messenger::console::t_str
DEFAULT_POST typedef std::string t_str
Definition
messenger.hpp:232
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::qt
qt(qt const &)=delete
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::qt
qt()=delete
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::operator=
qt operator=(qt const &)=delete
dbe::interface::messenger::qt::t_message_bucket
std::unordered_multiset< t_str > t_message_bucket
Definition
messenger.hpp:222
dbe::interface::messenger::qt::t_batches
std::array< t_message_bucket, static_cast< int >(messages::sizeme) > t_batches
Definition
messenger.hpp:223
macro.hpp
ERROR
#define ERROR(...)
Definition
messenger.hpp:93
NOTE
#define NOTE(...)
Definition
messenger.hpp:108
WARN
#define WARN(...)
Definition
messenger.hpp:85
DEBUG
#define DEBUG(...)
Definition
messenger.hpp:125
FAIL
#define FAIL(...)
Definition
messenger.hpp:133
INFO
#define INFO(...)
Definition
messenger.hpp:101
msghandler.hpp
DEFAULT_POST
#define DEFAULT_POST
Definition
msghandler.hxx:271
HAS_POST
#define HAS_POST
Definition
msghandler.hxx:270
dbe::interface::messenger
Definition
messenger.hpp:145
dbe::interface::messenger::messages
messages
Definition
messenger.hpp:147
dbe::interface::messenger::messages::sizeme
@ sizeme
Definition
messenger.hpp:154
dbe::interface
Definition
messenger.hpp:143
dbe
Include QT Headers.
Definition
BatchChangeWidget.hpp:18
dbe::interface::messenger::batch_guard::batch_guard
batch_guard()
Definition
messenger.cpp:177
dbe::interface::messenger::batch_guard::qt
friend class qt
Definition
messenger.hpp:161
dbe::interface::messenger::batch_guard::~batch_guard
~batch_guard()
Definition
messenger.cpp:169
dbe::interface::messenger::msglevels
Definition
messenger.hpp:168
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
Generated on
for DUNE-DAQ by
1.17.0