use crate::{Probe, ReadingsResult};
use std::sync::atomic::AtomicI64;
use std::sync::{Arc, Mutex};
lazy_static::lazy_static! {
static ref PROBE: Mutex<Option<Probe>> = Mutex::new(None);
}
pub fn set(probe: Probe) {
if let Ok(mut g) = PROBE.lock() {
g.replace(probe);
}
}
pub fn unset() {
if let Ok(mut g) = PROBE.lock() {
g.take();
}
}
pub fn log_event(event: &str) -> ReadingsResult<()> {
if let Ok(mut lock) = PROBE.lock() {
if let Some(probe) = lock.as_mut() {
return probe.log_event(event);
}
}
Ok(())
}
pub fn get_i64<S: AsRef<str>>(name: S) -> Option<Arc<AtomicI64>> {
if let Ok(mut lock) = PROBE.lock() {
if let Some(probe) = lock.as_mut() {
return probe.get_i64(name);
}
}
None
}