blob: b0b1a69e1f343f112bea4cb13ad10f1c188cd2ed [file] [log] [blame]
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00001#pragma once
2
3#include "types/collection_duration.hpp"
4#include "types/collection_time_scope.hpp"
5#include "types/operation_type.hpp"
6#include "utils/labeled_tuple.hpp"
7#include "utils/tstring.hpp"
8
9#include <sdbusplus/message/types.hpp>
10
11#include <chrono>
12#include <string>
13#include <tuple>
14#include <type_traits>
15#include <vector>
16
17using ReadingParametersPastVersion =
18 std::vector<std::tuple<sdbusplus::message::object_path, std::string,
19 std::string, std::string>>;
20
21using ReadingParameters = std::vector<
22 std::tuple<std::vector<sdbusplus::message::object_path>, std::string,
23 std::string, std::string, std::string, uint64_t>>;
24
25using LabeledSensorParameters =
26 utils::LabeledTuple<std::tuple<std::string, std::string>,
27 utils::tstring::Service, utils::tstring::Path>;
28
29using LabeledMetricParameters = utils::LabeledTuple<
30 std::tuple<std::vector<LabeledSensorParameters>, OperationType, std::string,
31 std::string, CollectionTimeScope, CollectionDuration>,
32 utils::tstring::SensorPath, utils::tstring::OperationType,
33 utils::tstring::Id, utils::tstring::MetricMetadata,
34 utils::tstring::CollectionTimeScope, utils::tstring::CollectionDuration>;
35
Szymon Dompke3eb56862021-09-20 15:32:04 +020036using ReadingData = std::tuple<std::string, std::string, double, uint64_t>;
37
38using Readings = std::tuple<uint64_t, std::vector<ReadingData>>;
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000039
40ReadingParameters
41 toReadingParameters(const std::vector<LabeledMetricParameters>& labeled);
Szymon Dompke3eb56862021-09-20 15:32:04 +020042
43enum class ReportUpdates
44{
45 Overwrite = 0,
46 AppendStopsWhenFull,
47 AppendWrapsWhenFull,
48 NewReport
49};
50
51namespace details
52{
53constexpr std::array<std::pair<std::string_view, ReportUpdates>, 5>
54 convDataReportUpdates = {
55 std::make_pair("Overwrite", ReportUpdates::Overwrite),
56 std::make_pair("AppendStopsWhenFull",
57 ReportUpdates::AppendStopsWhenFull),
58 std::make_pair("AppendWrapsWhenFull",
59 ReportUpdates::AppendWrapsWhenFull),
60 std::make_pair("NewReport", ReportUpdates::NewReport)};
61
62} // namespace details
63
64inline ReportUpdates stringToReportUpdates(const std::string& str)
65{
66 return utils::stringToEnum(details::convDataReportUpdates, str);
67}
68
69inline std::string reportUpdatesToString(ReportUpdates v)
70{
71 return std::string(utils::enumToString(details::convDataReportUpdates, v));
72}
73
74enum class ReportingType
75{
76 OnChange = 0,
77 OnRequest,
78 Periodic
79};
80
81namespace details
82{
83constexpr std::array<std::pair<std::string_view, ReportingType>, 3>
84 convDataReportingType = {
85 std::make_pair("OnChange", ReportingType::OnChange),
86 std::make_pair("OnRequest", ReportingType::OnRequest),
87 std::make_pair("Periodic", ReportingType::Periodic)};
88
89} // namespace details
90
91inline ReportingType stringToReportingType(const std::string& str)
92{
93 return utils::stringToEnum(details::convDataReportingType, str);
94}
95
96inline std::string reportingTypeToString(ReportingType v)
97{
98 return std::string(utils::enumToString(details::convDataReportingType, v));
99}