Optim & refactor

This commit is contained in:
Alex Auvolat 2021-03-12 22:06:56 +01:00
parent 831eb35763
commit 9b118160a8

View file

@ -116,10 +116,7 @@ where
}
for (k, vhash) in excluded {
let _ = self
.data
.gc_todo
.compare_and_swap::<_, _, Vec<u8>>(k, Some(vhash), None)?;
self.todo_remove_if_equal(&k[..], vhash)?;
}
if entries.len() == 0 {
@ -197,15 +194,20 @@ where
for (k, vhash) in deletes {
self.data.delete_if_equal_hash(&k[..], vhash)?;
let _ = self
.data
.gc_todo
.compare_and_swap::<_, _, Vec<u8>>(k, Some(vhash), None)?;
self.todo_remove_if_equal(&k[..], vhash)?;
}
Ok(())
}
fn todo_remove_if_equal(&self, key: &[u8], vhash: Hash) -> Result<(), Error> {
let _ = self
.data
.gc_todo
.compare_and_swap::<_, _, Vec<u8>>(key, Some(vhash), None)?;
Ok(())
}
// ---- RPC HANDLER ----
fn register_handler(self: &Arc<Self>, rpc_server: &mut RpcServer, path: String) {
@ -232,6 +234,7 @@ where
GcRPC::DeleteIfEqualHash(items) => {
for (key, vhash) in items.iter() {
self.data.delete_if_equal_hash(&key[..], *vhash)?;
self.todo_remove_if_equal(&key[..], *vhash)?;
}
Ok(GcRPC::Ok)
}