in common/rusty_leveldb_sgx/src/version_set.rs [263:282]
fn approximate_offset<'a>(&self, v: &Shared<Version>, key: InternalKey<'a>) -> usize {
let mut offset = 0;
for level in 0..NUM_LEVELS {
for f in &v.borrow().files[level] {
if self.opt.cmp.cmp(&f.borrow().largest, key) <= Ordering::Equal {
offset += f.borrow().size;
} else if self.opt.cmp.cmp(&f.borrow().smallest, key) == Ordering::Greater {
// In higher levels, files are sorted; we don't need to search further.
if level > 0 {
break;
}
} else {
if let Ok(tbl) = self.cache.borrow_mut().get_table(f.borrow().num) {
offset += tbl.approx_offset_of(key);
}
}
}
}
offset
}