diff options
| author | golubi-kuryat <[email protected]> | 2025-04-07 10:04:24 +0300 |
|---|---|---|
| committer | golubi-kuryat <[email protected]> | 2025-04-07 10:18:07 +0300 |
| commit | f414482ce4b8d716723c888bcb7603a4f49a8920 (patch) | |
| tree | 5369d42ecf1c29c6ef90811fd68a4f1ef7842011 /library/cpp/monlib/metrics/metric.h | |
| parent | 0b2bfef9c01a1d8230b29d1760f372dbed57c58d (diff) | |
Make WriteMetric protected
Появляется возможность зарегистрировать новую тип метрики с кастомным поведением, который наследуется от IMetric
Пример использования
HIDDEN_URL
commit_hash:82e3997427ef61d8017d6a1c1eca848131b03d7b
Diffstat (limited to 'library/cpp/monlib/metrics/metric.h')
| -rw-r--r-- | library/cpp/monlib/metrics/metric.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/library/cpp/monlib/metrics/metric.h b/library/cpp/monlib/metrics/metric.h index 2f7d9de687f..bb5fda322ea 100644 --- a/library/cpp/monlib/metrics/metric.h +++ b/library/cpp/monlib/metrics/metric.h @@ -15,6 +15,7 @@ namespace NMonitoring { virtual EMetricType Type() const noexcept = 0; virtual void Accept(TInstant time, IMetricConsumer* consumer) const = 0; + virtual void Reset() noexcept = 0; }; using IMetricPtr = TIntrusivePtr<IMetric>; @@ -28,7 +29,7 @@ namespace NMonitoring { virtual double Add(double n) noexcept = 0; virtual void Set(double n) noexcept = 0; virtual double Get() const noexcept = 0; - virtual void Reset() noexcept { + void Reset() noexcept override { Set(0); } }; @@ -58,7 +59,7 @@ namespace NMonitoring { virtual void Set(i64 value) noexcept = 0; virtual i64 Get() const noexcept = 0; - virtual void Reset() noexcept { + void Reset() noexcept override { Set(0); } }; @@ -84,7 +85,6 @@ namespace NMonitoring { virtual ui64 Add(ui64 n) noexcept = 0; virtual ui64 Get() const noexcept = 0; - virtual void Reset() noexcept = 0; }; class ILazyCounter: public IMetric { @@ -108,7 +108,6 @@ namespace NMonitoring { virtual ui64 Add(ui64 n) noexcept = 0; virtual ui64 Get() const noexcept = 0; - virtual void Reset() noexcept = 0; }; class ILazyRate: public IMetric { @@ -134,7 +133,6 @@ namespace NMonitoring { virtual void Record(double value) noexcept = 0; virtual void Record(double value, ui32 count) noexcept = 0; virtual IHistogramSnapshotPtr TakeSnapshot() const = 0; - virtual void Reset() noexcept = 0; protected: const bool IsRate_; @@ -194,6 +192,8 @@ namespace NMonitoring { consumer->OnDouble(time, Get()); } + void Reset() noexcept override {} + private: std::function<double()> Supplier_; }; @@ -245,6 +245,8 @@ namespace NMonitoring { consumer->OnInt64(time, Get()); } + void Reset() noexcept override {} + private: std::function<i64()> Supplier_; }; @@ -296,6 +298,8 @@ namespace NMonitoring { consumer->OnUint64(time, Get()); } + void Reset() noexcept override {} + private: std::function<ui64()> Supplier_; }; @@ -347,6 +351,8 @@ namespace NMonitoring { consumer->OnUint64(time, Get()); } + void Reset() noexcept override {} + private: std::function<ui64()> Supplier_; }; |
