blob: a8708e7a086e5ddab84ee04841a618576eba4fca [file] [log] [blame]
Krzysztof Grobelny80697712021-03-04 09:49:27 +00001#pragma once
2
3#include "types/operation_type.hpp"
4
5#include <cstdint>
6#include <memory>
7#include <utility>
8#include <vector>
9
10namespace details
11{
12
13using ReadingItem = std::pair<uint64_t, double>;
14
15class CollectionFunction
16{
17 public:
18 virtual ~CollectionFunction() = default;
19
20 virtual ReadingItem calculate(const std::vector<ReadingItem>& readings,
21 uint64_t timestamp) const = 0;
22 virtual ReadingItem
23 calculateForStartupInterval(std::vector<ReadingItem>& readings,
24 uint64_t timestamp) const = 0;
25};
26
27std::shared_ptr<CollectionFunction> makeCollectionFunction(OperationType);
28
29} // namespace details