Mountain/RunTime/Shutdown/FlushPendingOperations.rs
1#![allow(non_snake_case)]
2
3//! Drain pending UI requests, replying with a "shutting down" error to each
4//! awaiting caller so they unblock cleanly.
5
6use CommonLibrary::Error::CommonError::CommonError;
7
8use crate::{RunTime::ApplicationRunTime::ApplicationRunTime, dev_log};
9
10impl ApplicationRunTime {
11 pub async fn FlushPendingOperations(&self) {
12 dev_log!("lifecycle", "[ApplicationRunTime] Flushing pending operations...");
13
14 let mut PendingRequestsGuard = self
15 .Environment
16 .ApplicationState
17 .UI
18 .PendingUserInterfaceRequest
19 .lock()
20 .unwrap_or_else(|E| {
21 dev_log!(
22 "lifecycle",
23 "error: [ApplicationRunTime] Failed to lock pending UI requests: {}",
24 E
25 );
26 E.into_inner()
27 });
28
29 for (_RequestIdentifier, Sender) in PendingRequestsGuard.drain() {
30 let _ = Sender.send(Err(CommonError::Unknown {
31 Description:"Application shutting down".to_string(),
32 }));
33 }
34
35 dev_log!("lifecycle", "[ApplicationRunTime] Pending operations flushed");
36 }
37}