| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- #include <ctime>
 
- #include "gauge.h"
 
- namespace prometheus {
 
- Gauge::Gauge() : value_{0} {}
 
- Gauge::Gauge(double value) : value_{value} {}
 
- void Gauge::inc() { inc(1.0); }
 
- void Gauge::inc(double value) {
 
-   if (value < 0.0) {
 
-     return;
 
-   }
 
-   change(value);
 
- }
 
- void Gauge::dec() { dec(1.0); }
 
- void Gauge::dec(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::set_to_current_time() {
 
-   auto time = std::time(nullptr);
 
-   set(static_cast<double>(time));
 
- }
 
- double Gauge::value() const { return value_; }
 
- }
 
 
  |