(
&self,
inode: Inode,
node: GraphNode<NodeId>,
min_flag: EdgeFlags,
max_flag: EdgeFlags,
)
| 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, |
no test coverage detected