in common/rusty_leveldb_sgx/src/version.rs [104:139]
fn get_overlapping<'a>(&self, key: InternalKey<'a>) -> [Vec<FileMetaHandle>; NUM_LEVELS] {
let mut levels: [Vec<FileMetaHandle>; NUM_LEVELS] = Default::default();
let ikey = key;
let ukey = parse_internal_key(key).2;
let files = &self.files[0];
levels[0].reserve(files.len());
for f_ in files {
let f = f_.borrow();
let (fsmallest, flargest) = (
parse_internal_key(&f.smallest).2,
parse_internal_key(&f.largest).2,
);
if self.user_cmp.cmp(ukey, fsmallest) >= Ordering::Equal
&& self.user_cmp.cmp(ukey, flargest) <= Ordering::Equal
{
levels[0].push(f_.clone());
}
}
// Sort by newest first.
levels[0].sort_by(|a, b| b.borrow().num.cmp(&a.borrow().num));
let icmp = InternalKeyCmp(self.user_cmp.clone());
for level in 1..NUM_LEVELS {
let files = &self.files[level];
if let Some(ix) = find_file(&icmp, files, ikey) {
let f = files[ix].borrow();
let fsmallest = parse_internal_key(&f.smallest).2;
if self.user_cmp.cmp(ukey, fsmallest) >= Ordering::Equal {
levels[level].push(files[ix].clone());
}
}
}
levels
}