blob: eb0f7c479c9c9c9148c3e4e9fb4a77ea6b32996b [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#pragma once
2
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +01003#include "utils/conversion.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01004
5#include <string>
6#include <tuple>
7#include <utility>
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +01008#include <variant>
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01009#include <vector>
10
11namespace discrete
12{
13
14enum class Severity
15{
16 ok = 0,
17 warning,
18 critical
19};
20
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010021inline Severity toSeverity(int x)
22{
23 return utils::toEnum<Severity, Severity::ok, Severity::critical>(x);
24}
25
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010026using ThresholdParam = std::tuple<std::string, std::underlying_type_t<Severity>,
27 std::variant<double>, uint64_t>;
28} // namespace discrete
29
30namespace numeric
31{
32
33enum class Type
34{
35 lowerCritical = 0,
36 lowerWarning,
37 upperWarning,
38 upperCritical
39};
40
41enum class Direction
42{
43 either = 0,
44 decreasing,
45 increasing
46};
47
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010048inline Type toType(int x)
49{
50 return utils::toEnum<Type, Type::lowerCritical, Type::upperCritical>(x);
51}
52
53inline Direction toDirection(int x)
54{
55 return utils::toEnum<Direction, Direction::either, Direction::increasing>(
56 x);
57}
58
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010059using ThresholdParam = std::tuple<std::underlying_type_t<Type>, uint64_t,
60 std::underlying_type_t<Direction>, double>;
61} // namespace numeric
62
63using TriggerThresholdParams =
64 std::variant<std::vector<numeric::ThresholdParam>,
65 std::vector<discrete::ThresholdParam>>;