in common/rusty_leveldb_sgx/src/db_impl.rs [579:604]
fn make_room_for_write(&mut self, force: bool) -> Result<()> {
if !force && self.mem.approx_mem_usage() < self.opt.write_buffer_size {
Ok(())
} else if self.mem.len() == 0 {
Ok(())
} else {
// Create new memtable.
let logn = self.vset.borrow_mut().new_file_number();
let logf = self
.opt
.env
.open_writable_file(Path::new(&log_file_name(&self.path, logn)));
if logf.is_err() {
self.vset.borrow_mut().reuse_file_number(logn);
Err(logf.err().unwrap())
} else {
self.log = Some(LogWriter::new(BufWriter::new(logf.unwrap())));
self.log_num = Some(logn);
let mut imm = MemTable::new(self.opt.cmp.clone());
mem::swap(&mut imm, &mut self.mem);
self.imm = Some(imm);
self.maybe_do_compaction()
}
}
}