blob: 90c673d5438cca5b6b5a2d02de4e7f5cd631aafd [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, Jozef9f145912021-02-11 08:54:10 +010021namespace details
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010022{
Wludzik, Jozef9f145912021-02-11 08:54:10 +010023constexpr std::array<std::pair<std::string_view, Severity>, 3>
24 convDataSeverity = {std::make_pair("Ok", Severity::ok),
25 std::make_pair("Warning", Severity::warning),
26 std::make_pair("Critical", Severity::critical)};
27
28} // namespace details
29
30inline Severity stringToSeverity(const std::string& str)
31{
32 return utils::stringToEnum(details::convDataSeverity, str);
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010033}
34
Wludzik, Jozef9f145912021-02-11 08:54:10 +010035inline std::string severityToString(Severity v)
36{
37 return std::string(utils::enumToString(details::convDataSeverity, v));
38}
39
Szymon Dompkef763c9e2021-03-12 09:19:22 +010040using ThresholdParam = std::tuple<std::string, std::string, uint64_t, double>;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010041} // namespace discrete
42
43namespace numeric
44{
45
46enum class Type
47{
48 lowerCritical = 0,
49 lowerWarning,
50 upperWarning,
51 upperCritical
52};
53
54enum class Direction
55{
56 either = 0,
57 decreasing,
58 increasing
59};
60
Wludzik, Jozef9f145912021-02-11 08:54:10 +010061namespace details
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010062{
Wludzik, Jozef9f145912021-02-11 08:54:10 +010063
64constexpr std::array<std::pair<std::string_view, Type>, 4> convDataType = {
65 std::make_pair("LowerCritical", Type::lowerCritical),
66 std::make_pair("LowerWarning", Type::lowerWarning),
67 std::make_pair("UpperWarning", Type::upperWarning),
68 std::make_pair("UpperCritical", Type::upperCritical)};
69
70constexpr std::array<std::pair<std::string_view, Direction>, 3>
71 convDataDirection = {std::make_pair("Either", Direction::either),
72 std::make_pair("Decreasing", Direction::decreasing),
73 std::make_pair("Increasing", Direction::increasing)};
74
75} // namespace details
76
77inline Type stringToType(const std::string& str)
78{
79 return utils::stringToEnum(details::convDataType, str);
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010080}
81
Wludzik, Jozef9f145912021-02-11 08:54:10 +010082inline std::string typeToString(Type v)
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010083{
Wludzik, Jozef9f145912021-02-11 08:54:10 +010084 return std::string(utils::enumToString(details::convDataType, v));
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +010085}
86
Wludzik, Jozef9f145912021-02-11 08:54:10 +010087inline Direction stringToDirection(const std::string& str)
88{
89 return utils::stringToEnum(details::convDataDirection, str);
90}
91
92inline std::string directionToString(Direction v)
93{
94 return std::string(utils::enumToString(details::convDataDirection, v));
95}
96
97using ThresholdParam = std::tuple<std::string, uint64_t, std::string, double>;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010098} // namespace numeric
99
100using TriggerThresholdParams =
101 std::variant<std::vector<numeric::ThresholdParam>,
102 std::vector<discrete::ThresholdParam>>;