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

Method init_inode_adj

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

Source from the content-addressed store, hash-verified

1536 type InodeError = crate::pristine::PristineError;
1537
1538 fn init_inode_adj(
1539 &self,
1540 inode: Inode,
1541 node: GraphNode<NodeId>,
1542 min_flag: EdgeFlags,
1543 max_flag: EdgeFlags,
1544 ) -> Result<crate::pristine::InodeAdjState, Self::InodeError> {
1545 // Use the cached INODE_GRAPH table handle directly instead of
1546 // delegating to self.txn (which would reopen the table).
1547 let mut adj = crate::pristine::InodeAdjState::new(inode, node, min_flag, max_flag);
1548
1549 // Pre-load edges from the cached table on first init
1550 // (same logic as ReadTxn::next_inode_adj but using cached handle)
1551 let inode_id = inode.get();
1552 let key = encode_inode_vertex(
1553 inode_id,
1554 node.change.get(),
1555 node.start.get(),
1556 node.end.get(),
1557 );
1558 let mut edges = Vec::new();
1559 for v in self.inode_graph_table.get(&key)?.filter_map(|r| r.ok()) {
1560 let bytes: &[u8; 24] = v.value();
1561 let edge = deserialize_edge(bytes);
1562 let flag = edge.flag();
1563 if flag >= min_flag && flag <= max_flag {
1564 edges.push(edge);
1565 }
1566 }
1567 adj.set_edges(edges);
1568
1569 Ok(adj)
1570 }
1571
1572 fn next_inode_adj(
1573 &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