Mercurial > lbo > hg > leveldb-rs
changeset 269:6221c9630bf6
table_cache: Implement evict() method.
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Thu, 21 Sep 2017 15:40:47 +0200 |
parents | b8182038acbf |
children | d726aad0bd5c |
files | src/table_cache.rs |
diffstat | 1 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/table_cache.rs Thu Sep 21 15:37:25 2017 +0200 +++ b/src/table_cache.rs Thu Sep 21 15:40:47 2017 +0200 @@ -74,6 +74,14 @@ self.cache.insert(&filenum_to_key(file_num), table.clone()); Ok(table) } + + pub fn evict(&mut self, file_num: FileNum) -> Result<()> { + if self.cache.remove(&filenum_to_key(file_num)).is_some() { + Ok(()) + } else { + err(StatusCode::NotFound, "table not present in cache") + } + } } #[cfg(test)] @@ -129,10 +137,16 @@ assert!(opt.env.size_of(tblpath).unwrap() > 20); let mut cache = TableCache::new(dbname, opt.clone(), 10); + assert!(cache.cache.get(&filenum_to_key(123)).is_none()); assert_eq!(LdbIteratorIter::wrap(&mut cache.get_table(123).unwrap().iter()).count(), 4); // Test cached table. assert_eq!(LdbIteratorIter::wrap(&mut cache.get_table(123).unwrap().iter()).count(), 4); + + assert!(cache.cache.get(&filenum_to_key(123)).is_some()); + assert!(cache.evict(123).is_ok()); + assert!(cache.evict(123).is_err()); + assert!(cache.cache.get(&filenum_to_key(123)).is_none()); } }