xref: /openbmc/telemetry/src/metrics/collection_function.hpp (revision 583ba441654657bb4ba9d051b747144a7258c159)
1 #pragma once
2 
3 #include "types/duration_types.hpp"
4 #include "types/operation_type.hpp"
5 
6 #include <cstdint>
7 #include <memory>
8 #include <utility>
9 #include <vector>
10 
11 namespace metrics
12 {
13 
14 using ReadingItem = std::pair<Milliseconds, double>;
15 
16 class CollectionFunction
17 {
18   public:
19     virtual ~CollectionFunction() = default;
20 
21     virtual double calculate(const std::vector<ReadingItem>& readings,
22                              Milliseconds timestamp) const = 0;
23     virtual double calculateForStartupInterval(
24         std::vector<ReadingItem>& readings, Milliseconds timestamp) const = 0;
25 };
26 
27 std::shared_ptr<CollectionFunction> makeCollectionFunction(OperationType);
28 
29 } // namespace metrics
30