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 <utility>
17
#include <string>
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
uint64_t
start_ts
;
// NOLINT(build/unsigned)
34
uint64_t
end_ts
;
// NOLINT(build/unsigned)
35
36
bool
operator<
(
const
ErrorInterval
& other)
const
{
return
end_ts
< other.
end_ts
; }
37
38
bool
operator>
(
const
ErrorInterval
& other)
const
{
return
end_ts
> other.
end_ts
; }
39
};
40
41
FrameErrorRegistry
()
42
:
m_errors
()
43
{}
44
45
void
set_ers_metadata
(
const
std::string& ers_metadata)
46
{
47
m_ers_metadata
= ers_metadata;
48
}
49
50
void
add_error
(std::string error_name,
ErrorInterval
error
)
51
{
52
std::lock_guard<std::mutex> guard(
m_error_map_mutex
);
53
m_errors
.erase(error_name);
54
m_errors
.insert(std::make_pair(error_name,
error
));
55
}
56
57
void
remove_errors_until
(uint64_t ts)
// NOLINT(build/unsigned)
58
{
59
std::lock_guard<std::mutex> guard(
m_error_map_mutex
);
60
for
(
auto
it =
m_errors
.begin(); it !=
m_errors
.end();) {
61
if
(ts > it->second.end_ts) {
62
std::string error_name = it->first;
63
it =
m_errors
.erase(it);
64
ers::info
(ClearedError(
ERS_HERE
,
m_ers_metadata
.value_or(
""
), error_name));
65
}
else
{
66
it++;
67
}
68
}
69
}
70
71
void
log_registered_errors
() {
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:141
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:71
dunedaq::datahandlinglibs::FrameErrorRegistry::remove_errors_until
void remove_errors_until(uint64_t ts)
Definition
FrameErrorRegistry.hpp:57
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:45
dunedaq::datahandlinglibs::FrameErrorRegistry::add_error
void add_error(std::string error_name, ErrorInterval error)
Definition
FrameErrorRegistry.hpp:50
dunedaq::datahandlinglibs::FrameErrorRegistry::m_errors
std::map< std::string, ErrorInterval > m_errors
Definition
FrameErrorRegistry.hpp:83
dunedaq::datahandlinglibs::FrameErrorRegistry::FrameErrorRegistry
FrameErrorRegistry()
Definition
FrameErrorRegistry.hpp:41
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::error
CIB Buffer std::string descriptor Message from std::string descriptor CIB process error
Definition
CIBModuleIssues.hpp:47
ers::warning
void warning(const Issue &issue)
Definition
ers.hpp:126
ers::info
void info(const Issue &issue)
Definition
ers.hpp:106
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval
Definition
FrameErrorRegistry.hpp:26
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::operator>
bool operator>(const ErrorInterval &other) const
Definition
FrameErrorRegistry.hpp:38
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::operator<
bool operator<(const ErrorInterval &other) const
Definition
FrameErrorRegistry.hpp:36
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:34
dunedaq::datahandlinglibs::FrameErrorRegistry::ErrorInterval::start_ts
uint64_t start_ts
Definition
FrameErrorRegistry.hpp:33
Generated on
for DUNE-DAQ by
1.17.0