use std::sync::atomic::{AtomicBool, AtomicI64, Ordering::Relaxed};
pub struct CacheSizeTracker {
heap_bytes: AtomicI64,
read_cache_bytes: AtomicI64,
stopped: AtomicBool,
}
impl CacheSizeTracker {
pub fn new() -> Self {
Self {
heap_bytes: AtomicI64::new(0),
read_cache_bytes: AtomicI64::new(0),
stopped: AtomicBool::new(false),
}
}
pub fn add_heap_size(&self, bytes: i64) {
self.heap_bytes.fetch_add(bytes, Relaxed);
}
pub fn add_read_cache_heap_size(&self, bytes: i64) {
self.read_cache_bytes.fetch_add(bytes, Relaxed);
}
pub fn heap_bytes(&self) -> i64 {
self.heap_bytes.load(Relaxed)
}
pub fn stop(&self) {
self.stopped.store(true, Relaxed);
}
pub fn restart(&self) {
self.stopped.store(false, Relaxed);
}
pub fn is_stopped(&self) -> bool {
self.stopped.load(Relaxed)
}
}
impl Default for CacheSizeTracker {
fn default() -> Self {
Self::new()
}
}