artdaq_utilities  v1_04_03
MetricData.hh
1 #ifndef ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH
2 #define ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH
3 
4 #include "fhiclcpp/fwd.h"
5 #include "messagefacility/MessageLogger/MessageLogger.h"
6 
7 #include <sstream>
8 #include <list>
9 #include <condition_variable>
10 #include <atomic>
11 
12 namespace artdaq
13 {
17  enum class MetricType
18  {
20  StringMetric,
21  IntMetric,
22  DoubleMetric,
23  FloatMetric,
25  };
26 
30  enum class MetricMode
31  {
32  LastPoint,
33  Accumulate,
34  Average
35  };
36 
40  struct MetricData
41  {
46  MetricData(const MetricData& r) = default;
47 
52  MetricData(MetricData&& r) noexcept = default;
53 
59  MetricData& operator=(const MetricData& r) = default;
60 
66  MetricData& operator=(MetricData&& r) noexcept = default;
67 
71  std::string Name;
75  std::string StringValue;
76 
80  union
81  {
82  int IntValue;
83  double DoubleValue;
84  float FloatValue;
85  long unsigned int UnsignedValue;
86  };
87 
95  std::string Unit;
99  int Level;
107  std::string MetricPrefix;
112 
123  MetricData(std::string const& name, std::string const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
124  : Name(name)
125  , StringValue(value)
127  , Unit(unit)
128  , Level(level)
129  , Mode(mode)
130  , MetricPrefix(metricPrefix)
131  , UseNameOverride(useNameOverride) {}
132 
143  MetricData(std::string const& name, int const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
144  : Name(name)
145  , IntValue(value)
147  , Unit(unit)
148  , Level(level)
149  , Mode(mode)
150  , MetricPrefix(metricPrefix)
151  , UseNameOverride(useNameOverride)
152  {}
153 
164  MetricData(std::string const& name, double const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
165  : Name(name)
166  , DoubleValue(value)
168  , Unit(unit)
169  , Level(level)
170  , Mode(mode)
171  , MetricPrefix(metricPrefix)
172  , UseNameOverride(useNameOverride)
173  {}
174 
185  MetricData(std::string const& name, float const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
186  : Name(name)
187  , FloatValue(value)
189  , Unit(unit)
190  , Level(level)
191  , Mode(mode)
192  , MetricPrefix(metricPrefix)
193  , UseNameOverride(useNameOverride)
194  {}
195 
206  MetricData(std::string const& name, long unsigned int const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
207  : Name(name)
208  , UnsignedValue(value)
210  , Unit(unit)
211  , Level(level)
212  , Mode(mode)
213  , MetricPrefix(metricPrefix)
214  , UseNameOverride(useNameOverride)
215  {}
216 
220  MetricData() : Name("")
222  };
223 }
224 
225 #endif /* ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH */
std::string StringValue
Value of the metric, if it is a MetricType::StringMetric
Definition: MetricData.hh:75
std::string MetricPrefix
Name prefix for the metric
Definition: MetricData.hh:107
int IntValue
Value of the metric, if it is a MetricType::IntMetric.
Definition: MetricData.hh:82
double DoubleValue
Value of the metric, if it is a MetricType::DoubleMetric.
Definition: MetricData.hh:83
Report the average of all values. Use for rates to report accurate results.
MetricMode
The Mode of the metric indicates how multiple metric values should be combined within a reporting int...
Definition: MetricData.hh:30
std::string Unit
Units of the metric
Definition: MetricData.hh:95
float FloatValue
Value of the metric, if it is a MetricType::FloatMetric.
Definition: MetricData.hh:84
Metric is a std::string (not in union)
std::string Name
Name of the metric
Definition: MetricData.hh:71
MetricData(std::string const &name, std::string const &value, std::string const &unit, int level, MetricMode mode, std::string const &metricPrefix, bool useNameOverride)
Construct a MetricData point using a string value
Definition: MetricData.hh:123
bool UseNameOverride
Whether to override the default naming convention for this metric
Definition: MetricData.hh:111
MetricMode Mode
Accumulation mode of the metric
Definition: MetricData.hh:103
MetricType
This enumeration is used to identify the type of the metric instance (which value should be extraced ...
Definition: MetricData.hh:17
MetricData(std::string const &name, double const &value, std::string const &unit, int level, MetricMode mode, std::string const &metricPrefix, bool useNameOverride)
Construct a MetricData point using a double value
Definition: MetricData.hh:164
Metric is a long unsigned int.
MetricData(std::string const &name, float const &value, std::string const &unit, int level, MetricMode mode, std::string const &metricPrefix, bool useNameOverride)
Construct a MetricData point using a float value
Definition: MetricData.hh:185
MetricType Type
Type of the metric
Definition: MetricData.hh:91
Report the sum of all values. Use for counters to report accurate results.
MetricData()
Default constructor, constructs an MetricType::InvalidMetric
Definition: MetricData.hh:220
MetricData(std::string const &name, long unsigned int const &value, std::string const &unit, int level, MetricMode mode, std::string const &metricPrefix, bool useNameOverride)
Construct a MetricData point using a unsigned long int value
Definition: MetricData.hh:206
MetricData & operator=(const MetricData &r)=default
Default copy assignment operator
Small structure used to hold a metric data point before sending to the metric plugins ...
Definition: MetricData.hh:40
MetricData(std::string const &name, int const &value, std::string const &unit, int level, MetricMode mode, std::string const &metricPrefix, bool useNameOverride)
Construct a MetricData point using a int value
Definition: MetricData.hh:143
Report only the last value recorded. Useful for event counters, run numbers, etc. ...
Default, invalid value.
long unsigned int UnsignedValue
Value of the metric, if it is a MetricType::UnsignedMetric.
Definition: MetricData.hh:85
int Level
Reporting level of the metric
Definition: MetricData.hh:99