use rocksdb::Options;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct RocksdbConfig {
pub max_open_files: i32,
pub max_total_wal_size: u64,
pub max_background_jobs: i32,
}
impl Default for RocksdbConfig {
fn default() -> Self {
Self {
max_open_files: 5000,
max_total_wal_size: 1u64 << 30,
max_background_jobs: 16,
}
}
}
pub fn gen_rocksdb_options(config: &RocksdbConfig, readonly: bool) -> Options {
let mut db_opts = Options::default();
db_opts.set_max_open_files(config.max_open_files);
db_opts.set_max_total_wal_size(config.max_total_wal_size);
db_opts.set_max_background_jobs(config.max_background_jobs);
if !readonly {
db_opts.create_if_missing(true);
db_opts.create_missing_column_families(true);
db_opts.set_atomic_flush(true);
}
db_opts
}