use std::sync::{Arc, Mutex};
pub type ControlSessionStopHandler = Arc<dyn Fn() + Send + Sync>;
static STOP_HANDLER: Mutex<Option<ControlSessionStopHandler>> = Mutex::new(None);
pub fn set_control_session_stop_handler(handler: ControlSessionStopHandler) {
*STOP_HANDLER
.lock()
.unwrap_or_else(|error| error.into_inner()) = Some(handler);
}
pub fn request_control_session_stop() -> bool {
let handler = STOP_HANDLER
.lock()
.unwrap_or_else(|error| error.into_inner())
.clone();
match handler {
Some(handler) => {
handler();
true
}
None => false,
}
}