MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / put_change_deps

Method put_change_deps

atomic-core/src/pristine/txn/write/mod.rs:985–1029  ·  view source on GitHub ↗
(&mut self, change_id: NodeId, deps: &[Hash])

Source from the content-addressed store, hash-verified

983 }
984
985 fn put_change_deps(&mut self, change_id: NodeId, deps: &[Hash]) -> PristineResult<()> {
986 let existing: Vec<[u8; 32]> = {
987 let table = self.txn.open_multimap_table(CHANGE_DEPS)?;
988 let iter = table.get(change_id.get())?;
989 let mut hashes = Vec::new();
990 for item in iter {
991 hashes.push(*item?.value());
992 }
993 hashes
994 };
995
996 if !existing.is_empty() {
997 {
998 let mut table = self.txn.open_multimap_table(CHANGE_DEPS)?;
999 for dep in &existing {
1000 table.remove(change_id.get(), dep)?;
1001 }
1002 }
1003 {
1004 let mut table = self.txn.open_multimap_table(REV_CHANGE_DEPS)?;
1005 for dep in &existing {
1006 table.remove(dep, change_id.get())?;
1007 }
1008 }
1009 }
1010
1011 {
1012 let mut table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1013 for dep in deps {
1014 table.insert(change_id.get(), dep.as_bytes())?;
1015 }
1016 }
1017 {
1018 let mut table = self.txn.open_multimap_table(REV_CHANGE_DEPS)?;
1019 for dep in deps {
1020 table.insert(dep.as_bytes(), change_id.get())?;
1021 }
1022 }
1023 {
1024 let mut table = self.txn.open_table(CHANGE_DEPS_INDEXED)?;
1025 table.insert(change_id.get(), deps.len() as u64)?;
1026 }
1027
1028 Ok(())
1029 }
1030
1031 fn alloc_inode(&mut self) -> PristineResult<Inode> {
1032 let id = self.next_inode.fetch_add(1, Ordering::SeqCst);

Calls 7

getMethod · 0.65
removeMethod · 0.65
pushMethod · 0.45
is_emptyMethod · 0.45
insertMethod · 0.45
as_bytesMethod · 0.45
lenMethod · 0.45