Adds increment and decrement methods to Gauge (#64)

* Adds increment and decrement methods to Gauge.
This commit is contained in:
Jerome Gravel-Niquet 2019-12-17 20:08:37 +00:00 committed by Toby Lawrence
parent 22fbdffd24
commit 7fcab1c46e
2 changed files with 27 additions and 1 deletions

View File

@ -164,6 +164,20 @@ impl ValueHandle {
}
}
pub fn increment_gauge(&self, value: i64) {
match self.state.deref() {
ValueState::Gauge(inner) => inner.fetch_add(value, Ordering::Release),
_ => unreachable!("tried to access as gauge, not a gauge"),
};
}
pub fn decrement_gauge(&self, value: i64) {
match self.state.deref() {
ValueState::Gauge(inner) => inner.fetch_sub(value, Ordering::Release),
_ => unreachable!("tried to access as gauge, not a gauge"),
};
}
pub fn update_histogram(&self, value: u64) {
match self.state.deref() {
ValueState::Histogram(inner) => inner.record(value),
@ -313,8 +327,10 @@ mod tests {
let gauge = ValueHandle::gauge();
gauge.update_gauge(23);
gauge.increment_gauge(20);
gauge.decrement_gauge(1);
match gauge.snapshot() {
ValueSnapshot::Single(Measurement::Gauge(value)) => assert_eq!(value, 23),
ValueSnapshot::Single(Measurement::Gauge(value)) => assert_eq!(value, 42),
_ => panic!("incorrect value snapshot type for gauge"),
}

View File

@ -13,6 +13,16 @@ impl Gauge {
pub fn record(&self, value: i64) {
self.handle.update_gauge(value);
}
/// Increments the gauge's value
pub fn increment(&self, value: i64) {
self.handle.increment_gauge(value);
}
/// Decrements the gauge's value
pub fn decrement(&self, value: i64) {
self.handle.decrement_gauge(value);
}
}
impl From<ValueHandle> for Gauge {