summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-01-03 12:04:40 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-01-03 14:04:01 +0100
commit009b608871de302ab04e1b664727958df8cbafba (patch)
tree247616aa963f29dadd1d99719d31b8719d818708
parent0122e59bb073a4bee0e74f6d1e09c32e077dc249 (diff)
downloadimag-009b608871de302ab04e1b664727958df8cbafba.zip
imag-009b608871de302ab04e1b664727958df8cbafba.tar.gz
Add Store::is_borrowed(StoreId)
Add a function to Store to check whether a StoreId is borrowed. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/core/libimagstore/src/store.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/core/libimagstore/src/store.rs b/lib/core/libimagstore/src/store.rs
index 2661296..5137b51 100644
--- a/lib/core/libimagstore/src/store.rs
+++ b/lib/core/libimagstore/src/store.rs
@@ -216,6 +216,18 @@ impl Store {
Ok(store)
}
+ pub fn is_borrowed<S: IntoStoreId>(&self, id: S) -> Result<bool> {
+ let id = id.into_storeid()?;
+ debug!("Checking whether id is borrowed: '{}'", id);
+
+ self.entries
+ .read()
+ .map_err(|_| Error::from(EM::LockError))
+ .context(format_err!("Error while checking whether {} is borrowed", id))
+ .map(|cache| cache.get(&id).map(|e| e.is_borrowed()).unwrap_or(false))
+ .map_err(Error::from)
+ }
+
/// Creates the Entry at the given location (inside the entry)
///
/// # Return value