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

Method put_change_deps

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

Source from the content-addressed store, hash-verified

1456 }
1457
1458 fn put_change_deps(&mut self, change_id: NodeId, deps: &[Hash]) -> PristineResult<()> {
1459 let existing: Vec<[u8; 32]> = {
1460 let table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1461 let iter = table.get(change_id.get())?;
1462 let mut hashes = Vec::new();
1463 for item in iter {
1464 hashes.push(*item?.value());
1465 }
1466 hashes
1467 };
1468
1469 if !existing.is_empty() {
1470 {
1471 let mut table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1472 for dep in &existing {
1473 table.remove(change_id.get(), dep)?;
1474 }
1475 }
1476 {
1477 let mut table = self.txn.open_multimap_table(REV_CHANGE_DEPS)?;
1478 for dep in &existing {
1479 table.remove(dep, change_id.get())?;
1480 }
1481 }
1482 }
1483
1484 {
1485 let mut table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1486 for dep in deps {
1487 table.insert(change_id.get(), dep.as_bytes())?;
1488 }
1489 }
1490 {
1491 let mut table = self.txn.open_multimap_table(REV_CHANGE_DEPS)?;
1492 for dep in deps {
1493 table.insert(dep.as_bytes(), change_id.get())?;
1494 }
1495 }
1496 {
1497 let mut table = self.txn.open_table(CHANGE_DEPS_INDEXED)?;
1498 table.insert(change_id.get(), deps.len() as u64)?;
1499 }
1500
1501 Ok(())
1502 }
1503
1504 fn alloc_inode(&mut self) -> PristineResult<Inode> {
1505 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