DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
datahandlinglibs
include
datahandlinglibs
FrameErrorRegistry.hpp
Go to the documentation of this file.
1
8
#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_FRAMEERRORREGISTRY_HPP_
9
#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_FRAMEERRORREGISTRY_HPP_
10
11
#include "
DataHandlingIssues.hpp
"
12
13
#include <cstdint>
// uint_t types
14
#include <map>
15
#include <mutex>
16
#include <string>
17
#include <utility>
18
19
namespace
dunedaq
{
20
namespace
datahandlinglibs
{
21
22
class
FrameErrorRegistry
23
{
24
public
:
25
struct
ErrorInterval
26
{
27
public
:
28
ErrorInterval
(uint64_t
start_ts
, uint64_t
end_ts
)
// NOLINT(build/unsigned)
29
:
start_ts
(
start_ts
)
30
,
end_ts
(
end_ts
)
31
{
32
}
33
34
uint64_t
start_ts
;
// NOLINT(build/unsigned)
35
uint64_t
end_ts
;
// NOLINT(build/unsigned)
36
37
bool
operator<
(
const
ErrorInterval
& other)
const
{
return
end_ts
< other.
end_ts
; }
38
39
bool
operator>
(
const
ErrorInterval
& other)
const
{
return
end_ts
> other.
end_ts
; }
40
};
41
42
FrameErrorRegistry
()
43
:
m_errors
()
44
{
45
}
46
47
void
set_ers_metadata
(
const
std::string& ers_metadata) {
m_ers_metadata
= ers_metadata; }
48
49
void
add_error
(std::string error_name,
ErrorInterval
error
)
50
{
51
std::lock_guard<std::mutex> guard(
m_error_map_mutex
);
52
m_errors
.erase(error_name);
53
m_errors
.insert(std::make_pair(error_name,
error
));
54
}
55
56
void
remove_errors_until
(uint64_t ts)
// NOLINT(build/unsigned)
57
{
58
std::lock_guard<std::mutex> guard(
m_error_map_mutex
);
59
for
(
auto
it =
m_errors
.begin(); it !=
m_errors
.end();) {
60
if
(ts > it->second.end_ts) {
61
std::string error_name = it->first;
62
it =
m_errors
.erase(it);
63
ers::info
(ClearedError(
ERS_HERE
,
m_ers_metadata
.value_or(
""
), error_name));
64
}
else
{
65
it++;
66
}
67
}
68
}
69
70
void
log_registered_errors
()
71
{
72
std::lock_guard<std::mutex> guard(
m_error_map_mutex
);
73
for
(
const
auto
& [error_name, _] :
m_errors
) {
74
ers::warning
(NewErrorRegistered(
ERS_HERE
,
m_ers_metadata
.value_or(
""
), error_name));
75
}
76
}
77
78
bool
has_error
(std::string error_name) {
return
m_errors
.find(error_name) !=
m_errors
.end(); }
79
80
bool
has_error
() {
return
!
m_errors
.empty(); }
81
82
private
:
83
std::map<std::string, ErrorInterval>
m_errors
;
84
std::mutex
m_error_map_mutex
;
85
std::optional<std::string>
m_ers_metadata
;
86
};
87
88
}
// namespace datahandlinglibs
89
}
// namespace dunedaq
90
91
#endif
// DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_FRAMEERRORREGISTRY_HPP_
DataHandlingIssues.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:127
dunedaq::datahandlinglibs::FrameErrorRegistry::m_ers_metadata
std::optional< std::string > m_ers_metadata
Definition
FrameErrorRegistry.hpp:85
dunedaq::datahandlinglibs::FrameErrorRegistry::log_registered_errors
void log_registered_errors()
Definition
FrameErrorRegistry.hpp:70
dunedaq::datahandlinglibs::FrameErrorRegistry::remove_errors_until
void remove_errors_until(uint64_t ts)
Definition
FrameErrorRegistry.hpp:56
dunedaq::datahandlinglibs::FrameErrorRegistry::m_error_map_mutex
std::mutex m_error_map_mutex
Definition
FrameErrorRegistry.hpp:84
dunedaq::datahandlinglibs::FrameErrorRegistry::has_error
bool has_error(std::string error_name)
Definition
FrameErrorRegistry.hpp:78
dunedaq::datahandlinglibs::FrameErrorRegistry::has_error
bool has_error()
Definition
FrameErrorRegistry.hpp:80
dunedaq::datahandlinglibs::FrameErrorRegistry::set_ers_metadata
void set_ers_metadata(const std::string &ers_metadata)
Definition
FrameErrorRegistry.hpp:47
dunedaq::datahandlinglibs::FrameErrorRegistry::add_error
void add_error(std::string error_name, ErrorInterval error)
Definition
FrameErrorRegistry.hpp:49
dunedaq::datahandlinglibs::FrameErrorRegistry::m_errors
std::map< std::string, ErrorInterval > m_errors
Definition
FrameErrorRegistry.hpp:83
dunedaq::datahandlinglibs::FrameErrorRegistry::FrameErrorRegistry
FrameErrorRegistry()
Definition
FrameErrorRegistry.hpp:42
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::error
CIB Buffer std::string descriptor Message from std::string descriptor CIB process error
Definition
CIBModuleIssues.hpp:31
ers::warning
void warning(const Issue &issue)
Definition
ers.hpp:150
ers::info
void info(const Issue &issue)
Definition
ers.hpp:121
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval
Definition
FrameErrorRegistry.hpp:26
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::operator>
bool operator>(const ErrorInterval &other) const
Definition
FrameErrorRegistry.hpp:39
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::operator<
bool operator<(const ErrorInterval &other) const
Definition
FrameErrorRegistry.hpp:37
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::ErrorInterval
ErrorInterval(uint64_t start_ts, uint64_t end_ts)
Definition
FrameErrorRegistry.hpp:28
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::end_ts
uint64_t end_ts
Definition
FrameErrorRegistry.hpp:35
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::start_ts
uint64_t start_ts
Definition
FrameErrorRegistry.hpp:34
Generated on
for DUNE-DAQ by
1.18.0