artdaq_utilities  v1_04_06
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  Rate,
37  };
38 
42  struct MetricData
43  {
48  MetricData(const MetricData& r) = default;
49 
54  MetricData(MetricData&& r) noexcept = default;
55 
61  MetricData& operator=(const MetricData& r) = default;
62 
68  MetricData& operator=(MetricData&& r) noexcept = default;
69 
73  std::string Name;
77  std::string StringValue;
78 
82  union
83  {
84  int IntValue;
85  double DoubleValue;
86  float FloatValue;
87  long unsigned int UnsignedValue;
88  };
89 
97  std::string Unit;
101  int Level;
109  std::string MetricPrefix;
114 
125  MetricData(std::string const& name, std::string const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
126  : Name(name)
127  , StringValue(value)
129  , Unit(unit)
130  , Level(level)
131  , Mode(mode)
132  , MetricPrefix(metricPrefix)
133  , UseNameOverride(useNameOverride) {}
134 
145  MetricData(std::string const& name, int const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
146  : Name(name)
147  , IntValue(value)
149  , Unit(unit)
150  , Level(level)
151  , Mode(mode)
152  , MetricPrefix(metricPrefix)
153  , UseNameOverride(useNameOverride)
154  {}
155 
166  MetricData(std::string const& name, double const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
167  : Name(name)
168  , DoubleValue(value)
170  , Unit(unit)
171  , Level(level)
172  , Mode(mode)
173  , MetricPrefix(metricPrefix)
174  , UseNameOverride(useNameOverride)
175  {}
176 
187  MetricData(std::string const& name, float const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
188  : Name(name)
189  , FloatValue(value)
191  , Unit(unit)
192  , Level(level)
193  , Mode(mode)
194  , MetricPrefix(metricPrefix)
195  , UseNameOverride(useNameOverride)
196  {}
197 
208  MetricData(std::string const& name, long unsigned int const& value, std::string const& unit, int level, MetricMode mode, std::string const& metricPrefix, bool useNameOverride)
209  : Name(name)
210  , UnsignedValue(value)
212  , Unit(unit)
213  , Level(level)
214  , Mode(mode)
215  , MetricPrefix(metricPrefix)
216  , UseNameOverride(useNameOverride)
217  {}
218 
222  MetricData() : Name("")
224  };
225 }
226 
227 #endif /* ARTDAQ_UTILITIES_PLUGINS_METRICDATA_HH */
std::string StringValue
Value of the metric, if it is a MetricType::StringMetric
Definition: MetricData.hh:77
std::string MetricPrefix
Name prefix for the metric
Definition: MetricData.hh:109
int IntValue
Value of the metric, if it is a MetricType::IntMetric.
Definition: MetricData.hh:84
double DoubleValue
Value of the metric, if it is a MetricType::DoubleMetric.
Definition: MetricData.hh:85
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:97
float FloatValue
Value of the metric, if it is a MetricType::FloatMetric.
Definition: MetricData.hh:86
Metric is a std::string (not in union)
std::string Name
Name of the metric
Definition: MetricData.hh:73
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:125
Reports the sum of all values, divided by the length of the time interval they were accumulated over...
bool UseNameOverride
Whether to override the default naming convention for this metric
Definition: MetricData.hh:113
MetricMode Mode
Accumulation mode of the metric
Definition: MetricData.hh:105
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:166
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:187
Sends both the Accumulate mode and Rate mode metric. (Rate mode metric will append &quot;/s&quot; to metric uni...
MetricType Type
Type of the metric
Definition: MetricData.hh:93
Report the sum of all values. Use for counters to report accurate results.
MetricData()
Default constructor, constructs an MetricType::InvalidMetric
Definition: MetricData.hh:222
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:208
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:42
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:145
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:87
int Level
Reporting level of the metric
Definition: MetricData.hh:101