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

Method init_inode_adj

atomic-core/src/pristine/txn/read.rs:1649–1681  ·  view source on GitHub ↗
(
        &self,
        inode: Inode,
        node: GraphNode<NodeId>,
        min_flag: EdgeFlags,
        max_flag: EdgeFlags,
    )

Source from the content-addressed store, hash-verified

1647 type InodeError = crate::pristine::PristineError;
1648
1649 fn init_inode_adj(
1650 &self,
1651 inode: Inode,
1652 node: GraphNode<NodeId>,
1653 min_flag: EdgeFlags,
1654 max_flag: EdgeFlags,
1655 ) -> Result<crate::pristine::InodeAdjState, Self::InodeError> {
1656 // Use the cached INODE_GRAPH table handle directly instead of
1657 // delegating to self.txn (which would reopen the table).
1658 let mut adj = crate::pristine::InodeAdjState::new(inode, node, min_flag, max_flag);
1659
1660 // Pre-load edges from the cached table on first init
1661 // (same logic as ReadTxn::next_inode_adj but using cached handle)
1662 let inode_id = inode.get();
1663 let key = encode_inode_vertex(
1664 inode_id,
1665 node.change.get(),
1666 node.start.get(),
1667 node.end.get(),
1668 );
1669 let mut edges = Vec::new();
1670 for v in self.inode_graph_table.get(&key)?.filter_map(|r| r.ok()) {
1671 let bytes: &[u8; 24] = v.value();
1672 let edge = deserialize_edge(bytes);
1673 let flag = edge.flag();
1674 if flag >= min_flag && flag <= max_flag {
1675 edges.push(edge);
1676 }
1677 }
1678 adj.set_edges(edges);
1679
1680 Ok(adj)
1681 }
1682
1683 fn next_inode_adj(
1684 &self,

Calls 6

encode_inode_vertexFunction · 0.85
flagMethod · 0.80
set_edgesMethod · 0.80
deserialize_edgeFunction · 0.70
getMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected