From 382687fa2944c2c348210e93830e01429b249562 Mon Sep 17 00:00:00 2001 From: Raul Victor Trombin Date: Wed, 24 Jul 2024 21:49:37 -0300 Subject: [PATCH] src: device: manager: Fix: Remove device method --- src/device/manager.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/device/manager.rs b/src/device/manager.rs index 7f1e5eec..aec5df7c 100644 --- a/src/device/manager.rs +++ b/src/device/manager.rs @@ -43,6 +43,20 @@ impl Device { } } +impl Drop for Device { + fn drop(&mut self) { + trace!( + "Removing Device from DeviceManager, details: {:?}", + self.info() + ); + self.actor.abort(); + if let Some(broadcast_handle) = &self.broadcast { + trace!("Device broadcast handle closed for: {:?}", self.info().id); + broadcast_handle.abort(); + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum DeviceSelection { Common, @@ -403,8 +417,10 @@ impl DeviceManager { pub async fn delete(&mut self, device_id: Uuid) -> Result { match self.device.remove(&device_id) { Some(device) => { - info!("Device delete id {:?}: Success", device_id); - Ok(Answer::DeviceInfo(vec![device.info()])) + let device_info = device.info(); + drop(device); + trace!("Device delete id {:?}: Success", device_id); + Ok(Answer::DeviceInfo(vec![device_info])) } None => { error!("Device delete id {device_id:?} : Error, device doesn't exist");