(
&self,
inode: Inode,
)
| 518 | } |
| 519 | |
| 520 | fn iter_inode_vertices( |
| 521 | &self, |
| 522 | inode: Inode, |
| 523 | ) -> PristineResult< |
| 524 | Box< |
| 525 | dyn Iterator<Item = Result<(GraphNode<NodeId>, SerializedGraphEdge), PristineError>> |
| 526 | + '_, |
| 527 | >, |
| 528 | > { |
| 529 | let table = self.txn.open_multimap_table(INODE_GRAPH)?; |
| 530 | |
| 531 | let inode_id = inode.get(); |
| 532 | let start_key = encode_inode_vertex(inode_id, 0, 0, 0); |
| 533 | let end_key = encode_inode_vertex(inode_id, u64::MAX, u64::MAX, u64::MAX); |
| 534 | |
| 535 | // Collect to avoid lifetime issues |
| 536 | let mut results = Vec::new(); |
| 537 | for result in table.range::<&[u8; 32]>(&start_key..=&end_key)? { |
| 538 | match result { |
| 539 | Ok((key, values)) => { |
| 540 | let (_, change_id, start, end) = decode_inode_vertex(key.value()); |
| 541 | let node = GraphNode { |
| 542 | change: NodeId::new(change_id), |
| 543 | start: ChangePosition::new(start), |
| 544 | end: ChangePosition::new(end), |
| 545 | }; |
| 546 | |
| 547 | for v in values.filter_map(|r| r.ok()) { |
| 548 | let edge = deserialize_edge(v.value()); |
| 549 | results.push(Ok((node, edge))); |
| 550 | } |
| 551 | } |
| 552 | Err(e) => { |
| 553 | results.push(Err(PristineError::Storage(Box::new(e)))); |
| 554 | } |
| 555 | } |
| 556 | } |
| 557 | |
| 558 | Ok(Box::new(results.into_iter())) |
| 559 | } |
| 560 | |
| 561 | fn get_file_index(&self, path: &str) -> PristineResult<Option<FileIndexMetadata>> { |
| 562 | let table = self.txn.open_table(FILE_INDEX)?; |
nothing calls this directly
no test coverage detected