lingxia_platform/
control_session.rs1use std::sync::{Arc, Mutex};
9
10pub type ControlSessionStopHandler = Arc<dyn Fn() + Send + Sync>;
11
12static STOP_HANDLER: Mutex<Option<ControlSessionStopHandler>> = Mutex::new(None);
13
14pub fn set_control_session_stop_handler(handler: ControlSessionStopHandler) {
16 *STOP_HANDLER
17 .lock()
18 .unwrap_or_else(|error| error.into_inner()) = Some(handler);
19}
20
21pub fn request_control_session_stop() -> bool {
23 let handler = STOP_HANDLER
24 .lock()
25 .unwrap_or_else(|error| error.into_inner())
26 .clone();
27 match handler {
28 Some(handler) => {
29 handler();
30 true
31 }
32 None => false,
33 }
34}