7 #include "prometheus/detail/ckms_quantiles.h" // IWYU pragma: export
8 #include "prometheus/detail/core_export.h"
10 // IWYU pragma: private, include "prometheus/summary.h"
12 namespace prometheus
{
15 class PROMETHEUS_CPP_CORE_EXPORT TimeWindowQuantiles
{
16 using Clock
= std::chrono::steady_clock
;
19 TimeWindowQuantiles(const std::vector
<CKMSQuantiles::Quantile
>& quantiles
,
20 Clock::duration max_age_seconds
, int age_buckets
);
22 double get(double q
) const;
23 void insert(double value
);
26 CKMSQuantiles
& rotate() const;
28 const std::vector
<CKMSQuantiles::Quantile
>& quantiles_
;
29 mutable std::vector
<CKMSQuantiles
> ckms_quantiles_
;
30 mutable std::size_t current_bucket_
;
32 mutable Clock::time_point last_rotation_
;
33 const Clock::duration rotation_interval_
;
37 } // namespace prometheus