| #pragma once |
| |
| #include "types/collection_duration.hpp" |
| #include "types/collection_time_scope.hpp" |
| #include "types/duration_types.hpp" |
| #include "types/operation_type.hpp" |
| |
| #include <memory> |
| #include <optional> |
| #include <vector> |
| |
| namespace metrics |
| { |
| |
| class CollectionData |
| { |
| public: |
| virtual ~CollectionData() = default; |
| |
| virtual std::optional<double> update(Milliseconds timestamp) = 0; |
| virtual double update(Milliseconds timestamp, double value) = 0; |
| bool updateLastValue(double value); |
| |
| private: |
| std::optional<double> lastValue; |
| }; |
| |
| std::vector<std::unique_ptr<CollectionData>> |
| makeCollectionData(size_t size, OperationType, CollectionTimeScope, |
| CollectionDuration); |
| |
| } // namespace metrics |