| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- #include "prometheus/gauge.h"
 
- #include <ctime>
 
- namespace prometheus {
 
- Gauge::Gauge(const double value) : value_{value} {}
 
- void Gauge::Increment() { Increment(1.0); }
 
- void Gauge::Increment(const double value) { Change(value); }
 
- void Gauge::Decrement() { Decrement(1.0); }
 
- void Gauge::Decrement(const double value) { Change(-1.0 * value); }
 
- void Gauge::Set(const double value) { value_.store(value); }
 
- void Gauge::Change(const double value) {
 
-   auto current = value_.load();
 
-   while (!value_.compare_exchange_weak(current, current + value))
 
-     ;
 
- }
 
- void Gauge::SetToCurrentTime() {
 
-   const auto time = std::time(nullptr);
 
-   Set(static_cast<double>(time));
 
- }
 
- double Gauge::Value() const { return value_; }
 
- ClientMetric Gauge::Collect() const {
 
-   ClientMetric metric;
 
-   metric.gauge.value = Value();
 
-   return metric;
 
- }
 
- }  // namespace prometheus
 
 
  |