Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f Enterprise-only files removed or emptied: 63 Enterprise-only snippets removed: 117 in 50 files Dangling module declarations removed: 5 Cargo edits turning enterprise off: 14 Verification: clean Enterprise feature gates left for rebuilt features: 19 in 18 files Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
58 lines
1.2 KiB
Rust
58 lines
1.2 KiB
Rust
/*
|
|
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
|
|
*/
|
|
|
|
use std::sync::atomic::{AtomicU64, Ordering};
|
|
|
|
use crate::MetricType;
|
|
|
|
pub struct AtomicGauge {
|
|
id: MetricType,
|
|
value: AtomicU64,
|
|
}
|
|
|
|
impl AtomicGauge {
|
|
pub const fn new(id: MetricType) -> Self {
|
|
Self {
|
|
id,
|
|
value: AtomicU64::new(0),
|
|
}
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn increment(&self) {
|
|
self.value.fetch_add(1, Ordering::Relaxed);
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn set(&self, value: u64) {
|
|
self.value.store(value, Ordering::Relaxed);
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn decrement(&self) {
|
|
self.value.fetch_sub(1, Ordering::Relaxed);
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn get(&self) -> u64 {
|
|
self.value.load(Ordering::Relaxed)
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn add(&self, value: u64) {
|
|
self.value.fetch_add(value, Ordering::Relaxed);
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn subtract(&self, value: u64) {
|
|
self.value.fetch_sub(value, Ordering::Relaxed);
|
|
}
|
|
|
|
pub fn id(&self) -> MetricType {
|
|
self.id
|
|
}
|
|
}
|