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

Method iter_inode_vertices

atomic-core/src/pristine/txn/write/tree.rs:73–111  ·  view source on GitHub ↗
(
        &self,
        inode: Inode,
    )

Source from the content-addressed store, hash-verified

71 }
72
73 fn iter_inode_vertices(
74 &self,
75 inode: Inode,
76 ) -> PristineResult<
77 Box<
78 dyn Iterator<Item = Result<(GraphNode<NodeId>, SerializedGraphEdge), PristineError>>
79 + '_,
80 >,
81 > {
82 let table = self.txn.open_multimap_table(INODE_GRAPH)?;
83
84 let inode_id = inode.get();
85 let start_key = encode_inode_vertex(inode_id, 0, 0, 0);
86 let end_key = encode_inode_vertex(inode_id, u64::MAX, u64::MAX, u64::MAX);
87
88 let mut results = Vec::new();
89 for result in table.range::<&[u8; 32]>(&start_key..=&end_key)? {
90 match result {
91 Ok((key, values)) => {
92 let (_, change_id, start, end) = decode_inode_vertex(key.value());
93 let node = GraphNode {
94 change: NodeId::new(change_id),
95 start: ChangePosition::new(start),
96 end: ChangePosition::new(end),
97 };
98
99 for v in values.filter_map(|r| r.ok()) {
100 let edge = deserialize_edge(v.value());
101 results.push(Ok((node, edge)));
102 }
103 }
104 Err(e) => {
105 results.push(Err(PristineError::Storage(Box::new(e))));
106 }
107 }
108 }
109
110 Ok(Box::new(results.into_iter()))
111 }
112
113 fn get_file_index(&self, path: &str) -> PristineResult<Option<FileIndexMetadata>> {
114 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
getMethod · 0.65
deserialize_edgeFunction · 0.50
pushMethod · 0.45
into_iterMethod · 0.45

Tested by

no test coverage detected