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