Skip to main content

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}