Commit 65d4179c authored by Cholerae Hu's avatar Cholerae Hu Committed by zhangjinpeng1987

rocksdb: add get_compression method (#83)

parent 2321bc2c
......@@ -1768,6 +1768,10 @@ void crocksdb_options_set_compression(crocksdb_options_t* opt, int t) {
opt->rep.compression = static_cast<CompressionType>(t);
}
int crocksdb_options_get_compression(crocksdb_options_t* opt) {
return static_cast<int>(opt->rep.compression);
}
void crocksdb_options_set_compression_per_level(crocksdb_options_t* opt,
int* level_values,
size_t num_levels) {
......
......@@ -854,6 +854,8 @@ enum {
};
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_compression(
crocksdb_options_t*, int);
extern C_ROCKSDB_LIBRARY_API int crocksdb_options_get_compression(
crocksdb_options_t*);
enum {
crocksdb_level_compaction = 0,
......
......@@ -71,7 +71,7 @@ pub enum DBEntryType {
Other = 4,
}
#[derive(Copy, Clone)]
#[derive(Copy, Clone, Debug, PartialEq)]
#[repr(C)]
pub enum DBCompressionType {
DBNo = 0,
......@@ -311,6 +311,7 @@ extern "C" {
pub fn crocksdb_options_set_compaction_style(options: *mut DBOptions, cs: DBCompactionStyle);
pub fn crocksdb_options_set_compression(options: *mut DBOptions,
compression_style_no: DBCompressionType);
pub fn crocksdb_options_get_compression(options: *mut DBOptions) -> DBCompressionType;
pub fn crocksdb_options_set_compression_per_level(options: *mut DBOptions,
level_values: *const DBCompressionType,
num_levels: size_t);
......
......@@ -401,6 +401,10 @@ impl Options {
}
}
pub fn get_compression(&self) -> DBCompressionType {
unsafe { crocksdb_ffi::crocksdb_options_get_compression(self.inner) }
}
pub fn compression_per_level(&mut self, level_types: &[DBCompressionType]) {
unsafe {
crocksdb_ffi::crocksdb_options_set_compression_per_level(self.inner,
......
......@@ -15,7 +15,7 @@ use rocksdb::{DB, Options, BlockBasedOptions, WriteOptions, SliceTransform, Writ
CompactOptions};
use rocksdb::crocksdb_ffi::{DBStatisticsHistogramType as HistogramType,
DBStatisticsTickerType as TickerType, DBInfoLogLevel as InfoLogLevel,
CompactionPriority};
CompactionPriority, DBCompressionType};
use std::path::Path;
use std::thread;
use std::time::Duration;
......@@ -352,3 +352,11 @@ fn test_allow_concurrent_memtable_write() {
db.put(format!("k_{}", i).as_bytes(), b"v").unwrap();
}
}
#[test]
fn test_get_compression() {
let mut opts = Options::new();
opts.create_if_missing(true);
opts.compression(DBCompressionType::DBSnappy);
assert_eq!(opts.get_compression(), DBCompressionType::DBSnappy);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment