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