MCPcopy Create free account
hub / github.com/cosdata/cosdata / read_node

Function read_node

org/src/viewer.rs:191–237  ·  view source on GitHub ↗
(file: &mut File, latest_version_file: &mut File, dir: &Path)

Source from the content-addressed store, hash-verified

189}
190
191fn read_node(file: &mut File, latest_version_file: &mut File, dir: &Path) -> io::Result<Node> {
192 let mut level = [0u8; 1];
193 file.read_exact(&mut level)?;
194 let level = level[0];
195
196 let mut version_buffer = [0u8; 4];
197 file.read_exact(&mut version_buffer)?;
198 let version = u32::from_le_bytes(version_buffer);
199
200 let mut prop_buffer = [0u8; 8];
201 file.read_exact(&mut prop_buffer)?;
202 let prop_offset = u32::from_le_bytes(prop_buffer[0..4].try_into().unwrap());
203 let prop_length = u32::from_le_bytes(prop_buffer[4..8].try_into().unwrap());
204
205 let mut metadata_buffer = [0u8; 8];
206 file.read_exact(&mut metadata_buffer)?;
207 let metadata_offset = u32::from_le_bytes(metadata_buffer[0..4].try_into().unwrap());
208 let metadata_length = u32::from_le_bytes(metadata_buffer[4..8].try_into().unwrap());
209
210 let mut parent_latest_buffer = [0u8; 4];
211 file.read_exact(&mut parent_latest_buffer)?;
212 let parent_latest_offset = u32::from_le_bytes(parent_latest_buffer);
213 let parent_ptr = resolve_latest_ptr(latest_version_file, parent_latest_offset)?;
214 let parent_validation = parent_ptr.validate_link(dir);
215
216 let mut child_latest_buffer = [0u8; 4];
217 file.read_exact(&mut child_latest_buffer)?;
218 let child_latest_offset = u32::from_le_bytes(child_latest_buffer);
219 let child_ptr = resolve_latest_ptr(latest_version_file, child_latest_offset)?;
220 let child_validation = child_ptr.validate_link(dir);
221
222 let neighbors = read_neighbors(file, latest_version_file, dir)?;
223
224 Ok(Node {
225 level,
226 version,
227 prop_offset,
228 prop_length,
229 metadata_offset,
230 metadata_length,
231 parent_ptr,
232 parent_validation,
233 child_ptr,
234 child_validation,
235 neighbors,
236 })
237}
238
239fn print_index_ptr(ptr: &IndexPtr, validation: &LinkValidation, prefix: &str) {
240 if ptr.is_absent() {

Callers 1

mainFunction · 0.85

Calls 3

resolve_latest_ptrFunction · 0.85
read_neighborsFunction · 0.85
validate_linkMethod · 0.80

Tested by

no test coverage detected