use std::sync::Arc;
use noxu_log::LogWriteObserver;
use noxu_sync::Mutex;
use crate::UtilizationTracker;
pub struct UtilizationTrackerObserver {
tracker: Arc<Mutex<UtilizationTracker>>,
}
impl UtilizationTrackerObserver {
pub fn new(tracker: Arc<Mutex<UtilizationTracker>>) -> Self {
UtilizationTrackerObserver { tracker }
}
pub fn tracker(&self) -> &Arc<Mutex<UtilizationTracker>> {
&self.tracker
}
}
impl LogWriteObserver for UtilizationTrackerObserver {
fn count_new_entry(
&self,
file_num: u32,
_offset: u32,
entry_size: u32,
is_ln: bool,
is_in: bool,
) {
self.tracker.lock().count_new_log_entry(
file_num,
entry_size as i32,
is_ln,
is_in,
);
}
fn count_obsolete(
&self,
file_num: u32,
offset: u32,
entry_size: u32,
is_ln: bool,
) {
self.tracker.lock().track_obsolete(
file_num,
offset,
entry_size as i32,
is_ln,
);
}
}