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

Method init_inode_adj

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

Source from the content-addressed store, hash-verified

1710 type InodeError = crate::pristine::PristineError;
1711
1712 fn init_inode_adj(
1713 &self,
1714 inode: Inode,
1715 node: GraphNode<NodeId>,
1716 min_flag: EdgeFlags,
1717 max_flag: EdgeFlags,
1718 ) -> Result<crate::pristine::InodeAdjState, Self::InodeError> {
1719 // Use the cached INODE_GRAPH table handle directly instead of
1720 // delegating to self.txn (which would reopen the table).
1721 let mut adj = crate::pristine::InodeAdjState::new(inode, node, min_flag, max_flag);
1722
1723 // Pre-load edges from the cached table on first init
1724 // (same logic as ReadTxn::next_inode_adj but using cached handle)
1725 let inode_id = inode.get();
1726 let key = encode_inode_vertex(
1727 inode_id,
1728 node.change.get(),
1729 node.start.get(),
1730 node.end.get(),
1731 );
1732 let mut edges = Vec::new();
1733 for v in self.inode_graph_table.get(&key)?.filter_map(|r| r.ok()) {
1734 let bytes: &[u8; 24] = v.value();
1735 let edge = deserialize_edge(bytes);
1736 let flag = edge.flag();
1737 if flag >= min_flag && flag <= max_flag {
1738 edges.push(edge);
1739 }
1740 }
1741 adj.set_edges(edges);
1742
1743 Ok(adj)
1744 }
1745
1746 fn next_inode_adj(
1747 &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