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

Method init_inode_adj

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

Source from the content-addressed store, hash-verified

1665 type InodeError = crate::pristine::PristineError;
1666
1667 fn init_inode_adj(
1668 &self,
1669 inode: Inode,
1670 node: GraphNode<NodeId>,
1671 min_flag: EdgeFlags,
1672 max_flag: EdgeFlags,
1673 ) -> Result<crate::pristine::InodeAdjState, Self::InodeError> {
1674 // Use the cached INODE_GRAPH table handle directly instead of
1675 // delegating to self.txn (which would reopen the table).
1676 let mut adj = crate::pristine::InodeAdjState::new(inode, node, min_flag, max_flag);
1677
1678 // Pre-load edges from the cached table on first init
1679 // (same logic as ReadTxn::next_inode_adj but using cached handle)
1680 let inode_id = inode.get();
1681 let key = encode_inode_vertex(
1682 inode_id,
1683 node.change.get(),
1684 node.start.get(),
1685 node.end.get(),
1686 );
1687 let mut edges = Vec::new();
1688 for v in self.inode_graph_table.get(&key)?.filter_map(|r| r.ok()) {
1689 let bytes: &[u8; 24] = v.value();
1690 let edge = deserialize_edge(bytes);
1691 let flag = edge.flag();
1692 if flag >= min_flag && flag <= max_flag {
1693 edges.push(edge);
1694 }
1695 }
1696 adj.set_edges(edges);
1697
1698 Ok(adj)
1699 }
1700
1701 fn next_inode_adj(
1702 &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