blob: 17423692eb4e887206afab4d741c7222d92fcf98 [file] [log] [blame] [edit]
#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