Method
cb_read
(
ctxt: *mut c_void,
dest: *mut c_void,
offset: u64,
len: usize,
)
Source from the content-addressed store, hash-verified
| 39 | } |
| 40 | |
| 41 | extern "C" fn cb_read<F>( |
| 42 | ctxt: *mut c_void, |
| 43 | dest: *mut c_void, |
| 44 | offset: u64, |
| 45 | len: usize, |
| 46 | ) -> usize |
| 47 | where |
| 48 | F: Read + Write + Seek + Sized, |
| 49 | { |
| 50 | let f = unsafe { &mut *(ctxt as *mut F) }; |
| 51 | let dest = unsafe { slice::from_raw_parts_mut(dest as *mut u8, len) }; |
| 52 | |
| 53 | if f.seek(SeekFrom::Start(offset)).is_err() { |
| 54 | log::debug!("Failed to seek to offset {:x}", offset); |
| 55 | 0 |
| 56 | } else { |
| 57 | f.read(dest).unwrap_or(0) |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | extern "C" fn cb_write<F>( |
| 62 | ctxt: *mut c_void, |
Callers
nothing calls this directly
Tested by
no test coverage detected