Skip to main content

Mountain/RunTime/Shutdown/
FlushPendingOperations.rs

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