bacnet_server/server/
shutdown.rs1use super::*;
2
3impl<T: TransportPort + 'static> BACnetServer<T> {
4 pub async fn stop(&mut self) -> Result<(), Error> {
6 self.notification_transactions.close();
7 if let Some(task) = self.fault_detection_task.take() {
8 task.abort();
9 let _ = task.await;
10 }
11 if let Some(task) = self.event_enrollment_task.take() {
12 task.abort();
13 let _ = task.await;
14 }
15 if let Some(task) = self.trend_log_task.take() {
16 task.abort();
17 let _ = task.await;
18 }
19 if let Some(task) = self.schedule_tick_task.take() {
20 task.abort();
21 let _ = task.await;
22 }
23 if let Some(task) = self.intrinsic_reporting_task.take() {
24 task.abort();
25 let _ = task.await;
26 }
27 if let Some(task) = self.binary_lighting_operation_task.take() {
28 task.abort();
29 let _ = task.await;
30 }
31 if let Some(task) = self.cov_purge_task.take() {
32 task.abort();
33 let _ = task.await;
34 }
35 if let Some(task) = self.dispatch_task.take() {
36 task.abort();
37 let _ = task.await;
38 }
39 Ok(())
40 }
41}
42
43impl<T: TransportPort> Drop for BACnetServer<T> {
44 fn drop(&mut self) {
45 self.notification_transactions.close();
46 }
47}