blob: 17423692eb4e887206afab4d741c7222d92fcf98 [file] [log] [blame]
Krzysztof Grobelnyf7ea2992022-01-27 11:04:58 +01001#pragma once
2
3#include "types/collection_duration.hpp"
4#include "types/collection_time_scope.hpp"
5#include "types/duration_types.hpp"
6#include "types/operation_type.hpp"
7
8#include <memory>
9#include <optional>
10#include <vector>
11
12namespace metrics
13{
14
15class CollectionData
16{
17 public:
18 virtual ~CollectionData() = default;
19
20 virtual std::optional<double> update(Milliseconds timestamp) = 0;
21 virtual double update(Milliseconds timestamp, double value) = 0;
22 bool updateLastValue(double value);
23
24 private:
25 std::optional<double> lastValue;
26};
27
Patrick Williams583ba442025-02-03 14:28:19 -050028std::vector<std::unique_ptr<CollectionData>> makeCollectionData(
29 size_t size, OperationType, CollectionTimeScope, CollectionDuration);
Krzysztof Grobelnyf7ea2992022-01-27 11:04:58 +010030
31} // namespace metrics