From 7c54ad5c5f785b7a5a7a732dacda2fd35ec435f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Tue, 21 Apr 2020 09:40:50 +0200 Subject: [PATCH] crypto: Allow a device to be marked as deleted. --- src/crypto/device.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/crypto/device.rs b/src/crypto/device.rs index a5ef26a9..d0b2fcf1 100644 --- a/src/crypto/device.rs +++ b/src/crypto/device.rs @@ -115,6 +115,11 @@ impl Device { &self.algorithms } + /// Is the device deleted. + pub fn deleted(&self) -> bool { + self.deleted.load(Ordering::Relaxed) + } + /// Update a device with a new device keys struct. pub(crate) fn update_device(&mut self, device_keys: &DeviceKeys) { let mut keys = HashMap::new(); @@ -138,6 +143,11 @@ impl Device { mem::replace(&mut self.keys, Arc::new(keys)); mem::replace(&mut self.display_name, display_name); } + + /// Mark the device as deleted. + pub(crate) fn mark_as_deleted(&self) { + self.deleted.store(true, Ordering::Relaxed); + } } impl From<&DeviceKeys> for Device { @@ -258,4 +268,16 @@ pub(crate) mod test { device.display_name().as_ref().unwrap() ); } + + #[test] + fn delete_a_device() { + let device = get_device(); + assert!(!device.deleted()); + + let device_clone = device.clone(); + + device.mark_as_deleted(); + assert!(device.deleted()); + assert!(device_clone.deleted()); + } }