artdaq_utilities  v1_04_01
MetricData.hh
1 #ifndef ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH
2 #define ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH
3 
4 #include "artdaq-utilities/Plugins/MetricPlugin.hh"
5 #include "fhiclcpp/fwd.h"
6 #include "messagefacility/MessageLogger/MessageLogger.h"
7 
8 #include <sstream>
9 #include <list>
10 #include <condition_variable>
11 #include <atomic>
12 
13 namespace artdaq
14 {
18  enum class MetricType
19  {
21  StringMetric,
22  IntMetric,
23  DoubleMetric,
24  FloatMetric,
26  };
27 
31  enum class MetricMode
32  {
33  LastPoint,
34  Accumulate,
35  Average
36  };
37 
41  struct MetricData
42  {
47  MetricData(const MetricData& r) = default;
48 
53  MetricData(MetricData&& r) noexcept = default;
54 
60  MetricData& operator=(const MetricData& r) = default;
61 
67  MetricData& operator=(MetricData&& r) noexcept = default;
68 
72  std::string Name;
76  std::string StringValue;
77 
81  union
82  {
83  int IntValue;
84  double DoubleValue;
85  float FloatValue;
86  long unsigned int UnsignedValue;
87  };
88 
96  std::string Unit;
100  int Level;
108  std::string MetricPrefix;
113 
124  MetricData(std::string const& name, std::string const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
125  : Name(name)
126  , StringValue(value)
128  , Unit(unit)
129  , Level(level)
130  , Mode(mode)
131  , MetricPrefix(metricPrefix)
132  , UseNameOverride(useNameOverride) {}
133 
144  MetricData(std::string const& name, int const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
145  : Name(name)
146  , IntValue(value)
148  , Unit(unit)
149  , Level(level)
150  , Mode(mode)
151  , MetricPrefix(metricPrefix)
152  , UseNameOverride(useNameOverride)
153  {}
154 
165  MetricData(std::string const& name, double const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
166  : Name(name)
167  , DoubleValue(value)
169  , Unit(unit)
170  , Level(level)
171  , Mode(mode)
172  , MetricPrefix(metricPrefix)
173  , UseNameOverride(useNameOverride)
174  {}
175 
186  MetricData(std::string const& name, float const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
187  : Name(name)
188  , FloatValue(value)
190  , Unit(unit)
191  , Level(level)
192  , Mode(mode)
193  , MetricPrefix(metricPrefix)
194  , UseNameOverride(useNameOverride)
195  {}
196 
207  MetricData(std::string const& name, long unsigned int const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
208  : Name(name)
209  , UnsignedValue(value)
211  , Unit(unit)
212  , Level(level)
213  , Mode(mode)
214  , MetricPrefix(metricPrefix)
215  , UseNameOverride(useNameOverride)
216  {}
217 
221  MetricData() : Name("")
223  };
224 }
225 
226 #endif /* ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH */
std::string StringValue
Value of the metric, if it is a MetricType::StringMetric
Definition: MetricData.hh:76
std::string MetricPrefix
Name prefix for the metric
Definition: MetricData.hh:108
int IntValue
Value of the metric, if it is a MetricType::IntMetric.
Definition: MetricData.hh:83
double DoubleValue
Value of the metric, if it is a MetricType::DoubleMetric.
Definition: MetricData.hh:84
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:31
std::string Unit
Units of the metric
Definition: MetricData.hh:96
float FloatValue
Value of the metric, if it is a MetricType::FloatMetric.
Definition: MetricData.hh:85
Metric is a std::string (not in union)
std::string Name
Name of the metric
Definition: MetricData.hh:72
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:124
bool UseNameOverride
Whether to override the default naming convention for this metric
Definition: MetricData.hh:112
MetricMode Mode
Accumulation mode of the metric
Definition: MetricData.hh:104
MetricType
This enumeration is used to identify the type of the metric instance (which value should be extraced ...
Definition: MetricData.hh:18
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:165
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:186
MetricType Type
Type of the metric
Definition: MetricData.hh:92
Report the sum of all values. Use for counters to report accurate results.
MetricData()
Default constructor, constructs an MetricType::InvalidMetric
Definition: MetricData.hh:221
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:207
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:41
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:144
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:86
int Level
Reporting level of the metric
Definition: MetricData.hh:100