]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/core/include/prometheus/detail/time_window_quantiles.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / prometheus-cpp / core / include / prometheus / detail / time_window_quantiles.h
1 #pragma once
2
3 #include <chrono>
4 #include <cstddef>
5 #include <vector>
6
7 #include "prometheus/detail/ckms_quantiles.h" // IWYU pragma: export
8 #include "prometheus/detail/core_export.h"
9
10 // IWYU pragma: private, include "prometheus/summary.h"
11
12 namespace prometheus {
13 namespace detail {
14
15 class PROMETHEUS_CPP_CORE_EXPORT TimeWindowQuantiles {
16 using Clock = std::chrono::steady_clock;
17
18 public:
19 TimeWindowQuantiles(const std::vector<CKMSQuantiles::Quantile>& quantiles,
20 Clock::duration max_age_seconds, int age_buckets);
21
22 double get(double q) const;
23 void insert(double value);
24
25 private:
26 CKMSQuantiles& rotate() const;
27
28 const std::vector<CKMSQuantiles::Quantile>& quantiles_;
29 mutable std::vector<CKMSQuantiles> ckms_quantiles_;
30 mutable std::size_t current_bucket_;
31
32 mutable Clock::time_point last_rotation_;
33 const Clock::duration rotation_interval_;
34 };
35
36 } // namespace detail
37 } // namespace prometheus