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

Method iter_inode_vertices

atomic-core/src/pristine/txn/read.rs:475–514  ·  view source on GitHub ↗
(
        &self,
        inode: Inode,
    )

Source from the content-addressed store, hash-verified

473 }
474
475 fn iter_inode_vertices(
476 &self,
477 inode: Inode,
478 ) -> PristineResult<
479 Box<
480 dyn Iterator<Item = Result<(GraphNode<NodeId>, SerializedGraphEdge), PristineError>>
481 + '_,
482 >,
483 > {
484 let table = self.txn.open_multimap_table(INODE_GRAPH)?;
485
486 let inode_id = inode.get();
487 let start_key = encode_inode_vertex(inode_id, 0, 0, 0);
488 let end_key = encode_inode_vertex(inode_id, u64::MAX, u64::MAX, u64::MAX);
489
490 // Collect to avoid lifetime issues
491 let mut results = Vec::new();
492 for result in table.range::<&[u8; 32]>(&start_key..=&end_key)? {
493 match result {
494 Ok((key, values)) => {
495 let (_, change_id, start, end) = decode_inode_vertex(key.value());
496 let node = GraphNode {
497 change: NodeId::new(change_id),
498 start: ChangePosition::new(start),
499 end: ChangePosition::new(end),
500 };
501
502 for v in values.filter_map(|r| r.ok()) {
503 let edge = deserialize_edge(v.value());
504 results.push(Ok((node, edge)));
505 }
506 }
507 Err(e) => {
508 results.push(Err(PristineError::Storage(Box::new(e))));
509 }
510 }
511 }
512
513 Ok(Box::new(results.into_iter()))
514 }
515
516 fn get_file_index(&self, path: &str) -> PristineResult<Option<FileIndexMetadata>> {
517 let table = self.txn.open_table(FILE_INDEX)?;

Callers

nothing calls this directly

Calls 6

encode_inode_vertexFunction · 0.85
decode_inode_vertexFunction · 0.85
deserialize_edgeFunction · 0.70
getMethod · 0.65
pushMethod · 0.45
into_iterMethod · 0.45

Tested by

no test coverage detected