Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
R
rust-rocksdb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangzongwu
rust-rocksdb
Commits
275e39dc
Commit
275e39dc
authored
Sep 20, 2016
by
Jay
Committed by
GitHub
Sep 20, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor options (#38)
- restruct content layout - use enum to represent opaque structs - cleanup code
parent
435fb982
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
258 additions
and
285 deletions
+258
-285
lib.rs
librocksdb_sys/src/lib.rs
+87
-95
lib.rs
src/lib.rs
+5
-5
rocksdb.rs
src/rocksdb.rs
+18
-88
rocksdb_options.rs
src/rocksdb_options.rs
+148
-97
No files found.
librocksdb_sys/src/lib.rs
View file @
275e39dc
...
@@ -21,24 +21,16 @@ use libc::{c_char, c_uchar, c_int, c_void, size_t, uint64_t};
...
@@ -21,24 +21,16 @@ use libc::{c_char, c_uchar, c_int, c_void, size_t, uint64_t};
use
std
::
ffi
::
CStr
;
use
std
::
ffi
::
CStr
;
use
std
::
str
::
from_utf8
;
use
std
::
str
::
from_utf8
;
#[derive(Copy,
Clone)]
pub
enum
DBOptions
{}
#[repr(C)]
pub
struct
DBOptions
(
pub
*
const
c_void
);
#[derive(Copy,
Clone)]
#[derive(Copy,
Clone)]
#[repr(C)]
#[repr(C)]
pub
struct
DBInstance
(
pub
*
const
c_void
);
pub
struct
DBInstance
(
pub
*
const
c_void
);
#[derive(Copy,
Clone)]
pub
enum
DBWriteOptions
{}
#[repr(C)]
pub
enum
DBReadOptions
{}
pub
struct
DBWriteOptions
(
pub
*
const
c_void
);
#[derive(Copy,
Clone)]
#[repr(C)]
pub
struct
DBReadOptions
(
pub
*
const
c_void
);
#[derive(Copy,
Clone)]
#[derive(Copy,
Clone)]
#[repr(C)]
#[repr(C)]
pub
struct
DBMergeOperator
(
pub
*
const
c_void
);
pub
struct
DBMergeOperator
(
pub
*
const
c_void
);
#[derive(Copy,
Clone)]
pub
enum
DBBlockBasedTableOptions
{}
#[repr(C)]
pub
struct
DBBlockBasedTableOptions
(
pub
*
const
c_void
);
#[derive(Copy,
Clone)]
#[derive(Copy,
Clone)]
#[repr(C)]
#[repr(C)]
pub
struct
DBCache
(
pub
*
const
c_void
);
pub
struct
DBCache
(
pub
*
const
c_void
);
...
@@ -118,150 +110,150 @@ pub fn error_message(ptr: *const i8) -> String {
...
@@ -118,150 +110,150 @@ pub fn error_message(ptr: *const i8) -> String {
// instead...
// instead...
#[link(name
=
"rocksdb"
)]
#[link(name
=
"rocksdb"
)]
extern
"C"
{
extern
"C"
{
pub
fn
rocksdb_options_create
()
->
DBOptions
;
pub
fn
rocksdb_options_create
()
->
*
mut
DBOptions
;
pub
fn
rocksdb_options_destroy
(
opts
:
DBOptions
);
pub
fn
rocksdb_options_destroy
(
opts
:
*
mut
DBOptions
);
pub
fn
rocksdb_cache_create_lru
(
capacity
:
size_t
)
->
DBCache
;
pub
fn
rocksdb_cache_create_lru
(
capacity
:
size_t
)
->
DBCache
;
pub
fn
rocksdb_cache_destroy
(
cache
:
DBCache
);
pub
fn
rocksdb_cache_destroy
(
cache
:
DBCache
);
pub
fn
rocksdb_block_based_options_create
()
->
DBBlockBasedTableOptions
;
pub
fn
rocksdb_block_based_options_create
()
->
*
mut
DBBlockBasedTableOptions
;
pub
fn
rocksdb_block_based_options_destroy
(
opts
:
DBBlockBasedTableOptions
);
pub
fn
rocksdb_block_based_options_destroy
(
opts
:
*
mut
DBBlockBasedTableOptions
);
pub
fn
rocksdb_block_based_options_set_block_size
(
pub
fn
rocksdb_block_based_options_set_block_size
(
block_options
:
DBBlockBasedTableOptions
,
block_options
:
*
mut
DBBlockBasedTableOptions
,
block_size
:
size_t
);
block_size
:
size_t
);
pub
fn
rocksdb_block_based_options_set_block_size_deviation
(
pub
fn
rocksdb_block_based_options_set_block_size_deviation
(
block_options
:
DBBlockBasedTableOptions
,
block_options
:
*
mut
DBBlockBasedTableOptions
,
block_size_deviation
:
c_int
);
block_size_deviation
:
c_int
);
pub
fn
rocksdb_block_based_options_set_block_restart_interval
(
pub
fn
rocksdb_block_based_options_set_block_restart_interval
(
block_options
:
DBBlockBasedTableOptions
,
block_options
:
*
mut
DBBlockBasedTableOptions
,
block_restart_interval
:
c_int
);
block_restart_interval
:
c_int
);
pub
fn
rocksdb_block_based_options_set_cache_index_and_filter_blocks
(
pub
fn
rocksdb_block_based_options_set_cache_index_and_filter_blocks
(
block_options
:
DBBlockBasedTableOptions
,
v
:
c_uchar
);
block_options
:
*
mut
DBBlockBasedTableOptions
,
v
:
c_uchar
);
pub
fn
rocksdb_block_based_options_set_filter_policy
(
pub
fn
rocksdb_block_based_options_set_filter_policy
(
block_options
:
DBBlockBasedTableOptions
,
block_options
:
*
mut
DBBlockBasedTableOptions
,
filter_policy
:
DBFilterPolicy
);
filter_policy
:
DBFilterPolicy
);
pub
fn
rocksdb_block_based_options_set_no_block_cache
(
pub
fn
rocksdb_block_based_options_set_no_block_cache
(
block_options
:
DBBlockBasedTableOptions
,
no_block_cache
:
bool
);
block_options
:
*
mut
DBBlockBasedTableOptions
,
no_block_cache
:
bool
);
pub
fn
rocksdb_block_based_options_set_block_cache
(
pub
fn
rocksdb_block_based_options_set_block_cache
(
block_options
:
DBBlockBasedTableOptions
,
block_cache
:
DBCache
);
block_options
:
*
mut
DBBlockBasedTableOptions
,
block_cache
:
DBCache
);
pub
fn
rocksdb_block_based_options_set_block_cache_compressed
(
pub
fn
rocksdb_block_based_options_set_block_cache_compressed
(
block_options
:
DBBlockBasedTableOptions
,
block_options
:
*
mut
DBBlockBasedTableOptions
,
block_cache_compressed
:
DBCache
);
block_cache_compressed
:
DBCache
);
pub
fn
rocksdb_block_based_options_set_whole_key_filtering
(
pub
fn
rocksdb_block_based_options_set_whole_key_filtering
(
ck_options
:
DBBlockBasedTableOptions
,
doit
:
bool
);
ck_options
:
*
mut
DBBlockBasedTableOptions
,
doit
:
bool
);
pub
fn
rocksdb_options_set_block_based_table_factory
(
pub
fn
rocksdb_options_set_block_based_table_factory
(
options
:
DBOptions
,
options
:
*
mut
DBOptions
,
block_options
:
DBBlockBasedTableOptions
);
block_options
:
*
mut
DBBlockBasedTableOptions
);
pub
fn
rocksdb_options_increase_parallelism
(
options
:
DBOptions
,
pub
fn
rocksdb_options_increase_parallelism
(
options
:
*
mut
DBOptions
,
threads
:
c_int
);
threads
:
c_int
);
pub
fn
rocksdb_options_optimize_level_style_compaction
(
pub
fn
rocksdb_options_optimize_level_style_compaction
(
options
:
DBOptions
,
memtable_memory_budget
:
c_int
);
options
:
*
mut
DBOptions
,
memtable_memory_budget
:
c_int
);
pub
fn
rocksdb_options_set_create_if_missing
(
options
:
DBOptions
,
v
:
bool
);
pub
fn
rocksdb_options_set_create_if_missing
(
options
:
*
mut
DBOptions
,
v
:
bool
);
pub
fn
rocksdb_options_set_max_open_files
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_max_open_files
(
options
:
*
mut
DBOptions
,
files
:
c_int
);
files
:
c_int
);
pub
fn
rocksdb_options_set_use_fsync
(
options
:
DBOptions
,
v
:
c_int
);
pub
fn
rocksdb_options_set_use_fsync
(
options
:
*
mut
DBOptions
,
v
:
c_int
);
pub
fn
rocksdb_options_set_bytes_per_sync
(
options
:
DBOptions
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_bytes_per_sync
(
options
:
*
mut
DBOptions
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_disable_data_sync
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_disable_data_sync
(
options
:
*
mut
DBOptions
,
v
:
c_int
);
v
:
c_int
);
pub
fn
rocksdb_options_set_allow_os_buffer
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_allow_os_buffer
(
options
:
*
mut
DBOptions
,
is_allow
:
bool
);
is_allow
:
bool
);
pub
fn
rocksdb_options_optimize_for_point_lookup
(
options
:
DBOptions
,
pub
fn
rocksdb_options_optimize_for_point_lookup
(
options
:
*
mut
DBOptions
,
block_cache_size_mb
:
u64
);
block_cache_size_mb
:
u64
);
pub
fn
rocksdb_options_set_table_cache_numshardbits
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_table_cache_numshardbits
(
options
:
*
mut
DBOptions
,
bits
:
c_int
);
bits
:
c_int
);
pub
fn
rocksdb_options_set_max_write_buffer_number
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_max_write_buffer_number
(
options
:
*
mut
DBOptions
,
bufno
:
c_int
);
bufno
:
c_int
);
pub
fn
rocksdb_options_set_min_write_buffer_number_to_merge
(
pub
fn
rocksdb_options_set_min_write_buffer_number_to_merge
(
options
:
DBOptions
,
bufno
:
c_int
);
options
:
*
mut
DBOptions
,
bufno
:
c_int
);
pub
fn
rocksdb_options_set_level0_file_num_compaction_trigger
(
pub
fn
rocksdb_options_set_level0_file_num_compaction_trigger
(
options
:
DBOptions
,
no
:
c_int
);
options
:
*
mut
DBOptions
,
no
:
c_int
);
pub
fn
rocksdb_options_set_level0_slowdown_writes_trigger
(
pub
fn
rocksdb_options_set_level0_slowdown_writes_trigger
(
options
:
DBOptions
,
no
:
c_int
);
options
:
*
mut
DBOptions
,
no
:
c_int
);
pub
fn
rocksdb_options_set_level0_stop_writes_trigger
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_level0_stop_writes_trigger
(
options
:
*
mut
DBOptions
,
no
:
c_int
);
no
:
c_int
);
pub
fn
rocksdb_options_set_write_buffer_size
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_write_buffer_size
(
options
:
*
mut
DBOptions
,
bytes
:
u64
);
bytes
:
u64
);
pub
fn
rocksdb_options_set_target_file_size_base
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_target_file_size_base
(
options
:
*
mut
DBOptions
,
bytes
:
u64
);
bytes
:
u64
);
pub
fn
rocksdb_options_set_target_file_size_multiplier
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_target_file_size_multiplier
(
options
:
*
mut
DBOptions
,
mul
:
c_int
);
mul
:
c_int
);
pub
fn
rocksdb_options_set_max_bytes_for_level_base
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_max_bytes_for_level_base
(
options
:
*
mut
DBOptions
,
bytes
:
u64
);
bytes
:
u64
);
pub
fn
rocksdb_options_set_max_bytes_for_level_multiplier
(
options
:
DBOptions
,
mul
:
c_int
);
pub
fn
rocksdb_options_set_max_bytes_for_level_multiplier
(
options
:
*
mut
DBOptions
,
mul
:
c_int
);
pub
fn
rocksdb_options_set_max_log_file_size
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_max_log_file_size
(
options
:
*
mut
DBOptions
,
bytes
:
u64
);
bytes
:
u64
);
pub
fn
rocksdb_options_set_max_manifest_file_size
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_max_manifest_file_size
(
options
:
*
mut
DBOptions
,
bytes
:
u64
);
bytes
:
u64
);
pub
fn
rocksdb_options_set_hash_skip_list_rep
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_hash_skip_list_rep
(
options
:
*
mut
DBOptions
,
bytes
:
u64
,
bytes
:
u64
,
a1
:
i32
,
a1
:
i32
,
a2
:
i32
);
a2
:
i32
);
pub
fn
rocksdb_options_set_compaction_style
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_compaction_style
(
options
:
*
mut
DBOptions
,
cs
:
DBCompactionStyle
);
cs
:
DBCompactionStyle
);
pub
fn
rocksdb_options_set_compression
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_compression
(
options
:
*
mut
DBOptions
,
compression_style_no
:
DBCompressionType
);
compression_style_no
:
DBCompressionType
);
pub
fn
rocksdb_options_set_compression_per_level
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_compression_per_level
(
options
:
*
mut
DBOptions
,
level_values
:
*
const
DBCompressionType
,
level_values
:
*
const
DBCompressionType
,
num_levels
:
size_t
);
num_levels
:
size_t
);
pub
fn
rocksdb_options_set_max_background_compactions
(
pub
fn
rocksdb_options_set_max_background_compactions
(
options
:
DBOptions
,
max_bg_compactions
:
c_int
);
options
:
*
mut
DBOptions
,
max_bg_compactions
:
c_int
);
pub
fn
rocksdb_options_set_max_background_flushes
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_max_background_flushes
(
options
:
*
mut
DBOptions
,
max_bg_flushes
:
c_int
);
max_bg_flushes
:
c_int
);
pub
fn
rocksdb_options_set_filter_deletes
(
options
:
DBOptions
,
v
:
bool
);
pub
fn
rocksdb_options_set_filter_deletes
(
options
:
*
mut
DBOptions
,
v
:
bool
);
pub
fn
rocksdb_options_set_disable_auto_compactions
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_disable_auto_compactions
(
options
:
*
mut
DBOptions
,
v
:
c_int
);
v
:
c_int
);
pub
fn
rocksdb_options_set_report_bg_io_stats
(
options
:
DBOptions
,
v
:
c_int
);
pub
fn
rocksdb_options_set_report_bg_io_stats
(
options
:
*
mut
DBOptions
,
v
:
c_int
);
pub
fn
rocksdb_options_set_wal_recovery_mode
(
options
:
DBOptions
,
mode
:
DBRecoveryMode
);
pub
fn
rocksdb_options_set_wal_recovery_mode
(
options
:
*
mut
DBOptions
,
mode
:
DBRecoveryMode
);
pub
fn
rocksdb_filterpolicy_create_bloom_full
(
bits_per_key
:
c_int
)
pub
fn
rocksdb_filterpolicy_create_bloom_full
(
bits_per_key
:
c_int
)
->
DBFilterPolicy
;
->
DBFilterPolicy
;
pub
fn
rocksdb_filterpolicy_create_bloom
(
bits_per_key
:
c_int
)
pub
fn
rocksdb_filterpolicy_create_bloom
(
bits_per_key
:
c_int
)
->
DBFilterPolicy
;
->
DBFilterPolicy
;
pub
fn
rocksdb_open
(
options
:
DBOptions
,
pub
fn
rocksdb_open
(
options
:
*
mut
DBOptions
,
path
:
*
const
i8
,
path
:
*
const
i8
,
err
:
*
mut
*
const
i8
)
err
:
*
mut
*
const
i8
)
->
DBInstance
;
->
DBInstance
;
pub
fn
rocksdb_writeoptions_create
()
->
DBWriteOptions
;
pub
fn
rocksdb_writeoptions_create
()
->
*
mut
DBWriteOptions
;
pub
fn
rocksdb_writeoptions_destroy
(
writeopts
:
DBWriteOptions
);
pub
fn
rocksdb_writeoptions_destroy
(
writeopts
:
*
mut
DBWriteOptions
);
pub
fn
rocksdb_writeoptions_set_sync
(
writeopts
:
DBWriteOptions
,
v
:
bool
);
pub
fn
rocksdb_writeoptions_set_sync
(
writeopts
:
*
mut
DBWriteOptions
,
v
:
bool
);
pub
fn
rocksdb_writeoptions_disable_WAL
(
writeopts
:
DBWriteOptions
,
pub
fn
rocksdb_writeoptions_disable_WAL
(
writeopts
:
*
mut
DBWriteOptions
,
v
:
c_int
);
v
:
c_int
);
pub
fn
rocksdb_put
(
db
:
DBInstance
,
pub
fn
rocksdb_put
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
mut
DBWriteOptions
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
v
:
*
const
u8
,
v
:
*
const
u8
,
vLen
:
size_t
,
vLen
:
size_t
,
err
:
*
mut
*
const
i8
);
err
:
*
mut
*
const
i8
);
pub
fn
rocksdb_put_cf
(
db
:
DBInstance
,
pub
fn
rocksdb_put_cf
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
mut
DBWriteOptions
,
cf
:
DBCFHandle
,
cf
:
DBCFHandle
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
v
:
*
const
u8
,
v
:
*
const
u8
,
vLen
:
size_t
,
vLen
:
size_t
,
err
:
*
mut
*
const
i8
);
err
:
*
mut
*
const
i8
);
pub
fn
rocksdb_readoptions_create
()
->
DBReadOptions
;
pub
fn
rocksdb_readoptions_create
()
->
*
mut
DBReadOptions
;
pub
fn
rocksdb_readoptions_destroy
(
readopts
:
DBReadOptions
);
pub
fn
rocksdb_readoptions_destroy
(
readopts
:
*
mut
DBReadOptions
);
pub
fn
rocksdb_readoptions_set_verify_checksums
(
readopts
:
DBReadOptions
,
pub
fn
rocksdb_readoptions_set_verify_checksums
(
readopts
:
*
mut
DBReadOptions
,
v
:
bool
);
v
:
bool
);
pub
fn
rocksdb_readoptions_set_fill_cache
(
readopts
:
DBReadOptions
,
pub
fn
rocksdb_readoptions_set_fill_cache
(
readopts
:
*
mut
DBReadOptions
,
v
:
bool
);
v
:
bool
);
pub
fn
rocksdb_readoptions_set_snapshot
(
readopts
:
DBReadOptions
,
pub
fn
rocksdb_readoptions_set_snapshot
(
readopts
:
*
mut
DBReadOptions
,
snapshot
:
DBSnapshot
);
//TODO how do I make this a const ref?
snapshot
:
DBSnapshot
);
//TODO how do I make this a const ref?
pub
fn
rocksdb_readoptions_set_iterate_upper_bound
(
readopts
:
DBReadOptions
,
pub
fn
rocksdb_readoptions_set_iterate_upper_bound
(
readopts
:
*
mut
DBReadOptions
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
);
kLen
:
size_t
);
pub
fn
rocksdb_readoptions_set_read_tier
(
readopts
:
DBReadOptions
,
pub
fn
rocksdb_readoptions_set_read_tier
(
readopts
:
*
mut
DBReadOptions
,
tier
:
c_int
);
tier
:
c_int
);
pub
fn
rocksdb_readoptions_set_tailing
(
readopts
:
DBReadOptions
,
v
:
bool
);
pub
fn
rocksdb_readoptions_set_tailing
(
readopts
:
*
mut
DBReadOptions
,
v
:
bool
);
pub
fn
rocksdb_get
(
db
:
DBInstance
,
pub
fn
rocksdb_get
(
db
:
DBInstance
,
readopts
:
DBReadOptions
,
readopts
:
*
const
DBReadOptions
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
valLen
:
*
const
size_t
,
valLen
:
*
const
size_t
,
err
:
*
mut
*
const
i8
)
err
:
*
mut
*
const
i8
)
->
*
mut
c_void
;
->
*
mut
c_void
;
pub
fn
rocksdb_get_cf
(
db
:
DBInstance
,
pub
fn
rocksdb_get_cf
(
db
:
DBInstance
,
readopts
:
DBReadOptions
,
readopts
:
*
const
DBReadOptions
,
cf_handle
:
DBCFHandle
,
cf_handle
:
DBCFHandle
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
...
@@ -269,45 +261,45 @@ extern "C" {
...
@@ -269,45 +261,45 @@ extern "C" {
err
:
*
mut
*
const
i8
)
err
:
*
mut
*
const
i8
)
->
*
mut
c_void
;
->
*
mut
c_void
;
pub
fn
rocksdb_create_iterator
(
db
:
DBInstance
,
pub
fn
rocksdb_create_iterator
(
db
:
DBInstance
,
readopts
:
DBReadOptions
)
readopts
:
*
const
DBReadOptions
)
->
DBIterator
;
->
DBIterator
;
pub
fn
rocksdb_create_iterator_cf
(
db
:
DBInstance
,
pub
fn
rocksdb_create_iterator_cf
(
db
:
DBInstance
,
readopts
:
DBReadOptions
,
readopts
:
*
const
DBReadOptions
,
cf_handle
:
DBCFHandle
)
cf_handle
:
DBCFHandle
)
->
DBIterator
;
->
DBIterator
;
pub
fn
rocksdb_create_snapshot
(
db
:
DBInstance
)
->
DBSnapshot
;
pub
fn
rocksdb_create_snapshot
(
db
:
DBInstance
)
->
DBSnapshot
;
pub
fn
rocksdb_release_snapshot
(
db
:
DBInstance
,
snapshot
:
DBSnapshot
);
pub
fn
rocksdb_release_snapshot
(
db
:
DBInstance
,
snapshot
:
DBSnapshot
);
pub
fn
rocksdb_delete
(
db
:
DBInstance
,
pub
fn
rocksdb_delete
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
const
DBWriteOptions
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
err
:
*
mut
*
const
i8
)
err
:
*
mut
*
const
i8
)
->
*
mut
c_void
;
->
*
mut
c_void
;
pub
fn
rocksdb_delete_cf
(
db
:
DBInstance
,
pub
fn
rocksdb_delete_cf
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
const
DBWriteOptions
,
cf
:
DBCFHandle
,
cf
:
DBCFHandle
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
err
:
*
mut
*
const
i8
)
err
:
*
mut
*
const
i8
)
->
*
mut
c_void
;
->
*
mut
c_void
;
pub
fn
rocksdb_close
(
db
:
DBInstance
);
pub
fn
rocksdb_close
(
db
:
DBInstance
);
pub
fn
rocksdb_destroy_db
(
options
:
DBOptions
,
pub
fn
rocksdb_destroy_db
(
options
:
*
const
DBOptions
,
path
:
*
const
i8
,
path
:
*
const
i8
,
err
:
*
mut
*
const
i8
);
err
:
*
mut
*
const
i8
);
pub
fn
rocksdb_repair_db
(
options
:
DBOptions
,
pub
fn
rocksdb_repair_db
(
options
:
*
const
DBOptions
,
path
:
*
const
i8
,
path
:
*
const
i8
,
err
:
*
mut
*
const
i8
);
err
:
*
mut
*
const
i8
);
// Merge
// Merge
pub
fn
rocksdb_merge
(
db
:
DBInstance
,
pub
fn
rocksdb_merge
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
const
DBWriteOptions
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
v
:
*
const
u8
,
v
:
*
const
u8
,
vLen
:
size_t
,
vLen
:
size_t
,
err
:
*
mut
*
const
i8
);
err
:
*
mut
*
const
i8
);
pub
fn
rocksdb_merge_cf
(
db
:
DBInstance
,
pub
fn
rocksdb_merge_cf
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
const
DBWriteOptions
,
cf
:
DBCFHandle
,
cf
:
DBCFHandle
,
k
:
*
const
u8
,
k
:
*
const
u8
,
kLen
:
size_t
,
kLen
:
size_t
,
...
@@ -340,7 +332,7 @@ extern "C" {
...
@@ -340,7 +332,7 @@ extern "C" {
name_fn
:
extern
fn
(
*
mut
c_void
)
->
*
const
c_char
,
name_fn
:
extern
fn
(
*
mut
c_void
)
->
*
const
c_char
,
)
->
DBMergeOperator
;
)
->
DBMergeOperator
;
pub
fn
rocksdb_mergeoperator_destroy
(
mo
:
DBMergeOperator
);
pub
fn
rocksdb_mergeoperator_destroy
(
mo
:
DBMergeOperator
);
pub
fn
rocksdb_options_set_merge_operator
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_merge_operator
(
options
:
*
mut
DBOptions
,
mo
:
DBMergeOperator
);
mo
:
DBMergeOperator
);
// Iterator
// Iterator
pub
fn
rocksdb_iter_destroy
(
iter
:
DBIterator
);
pub
fn
rocksdb_iter_destroy
(
iter
:
DBIterator
);
...
@@ -355,7 +347,7 @@ extern "C" {
...
@@ -355,7 +347,7 @@ extern "C" {
pub
fn
rocksdb_iter_get_error
(
iter
:
DBIterator
,
err
:
*
mut
*
const
u8
);
pub
fn
rocksdb_iter_get_error
(
iter
:
DBIterator
,
err
:
*
mut
*
const
u8
);
// Write batch
// Write batch
pub
fn
rocksdb_write
(
db
:
DBInstance
,
pub
fn
rocksdb_write
(
db
:
DBInstance
,
writeopts
:
DBWriteOptions
,
writeopts
:
*
const
DBWriteOptions
,
batch
:
DBWriteBatch
,
batch
:
DBWriteBatch
,
err
:
*
mut
*
const
i8
);
err
:
*
mut
*
const
i8
);
pub
fn
rocksdb_writebatch_create
()
->
DBWriteBatch
;
pub
fn
rocksdb_writebatch_create
()
->
DBWriteBatch
;
...
@@ -407,7 +399,7 @@ extern "C" {
...
@@ -407,7 +399,7 @@ extern "C" {
->
*
const
u8
;
->
*
const
u8
;
// Comparator
// Comparator
pub
fn
rocksdb_options_set_comparator
(
options
:
DBOptions
,
pub
fn
rocksdb_options_set_comparator
(
options
:
*
mut
DBOptions
,
cb
:
DBComparator
);
cb
:
DBComparator
);
pub
fn
rocksdb_comparator_create
(
state
:
*
mut
c_void
,
pub
fn
rocksdb_comparator_create
(
state
:
*
mut
c_void
,
destroy
:
extern
"C"
fn
(
*
mut
c_void
)
->
(),
destroy
:
extern
"C"
fn
(
*
mut
c_void
)
->
(),
...
@@ -423,16 +415,16 @@ extern "C" {
...
@@ -423,16 +415,16 @@ extern "C" {
pub
fn
rocksdb_comparator_destroy
(
cmp
:
DBComparator
);
pub
fn
rocksdb_comparator_destroy
(
cmp
:
DBComparator
);
// Column Family
// Column Family
pub
fn
rocksdb_open_column_families
(
options
:
DBOptions
,
pub
fn
rocksdb_open_column_families
(
options
:
*
const
DBOptions
,
path
:
*
const
i8
,
path
:
*
const
i8
,
num_column_families
:
c_int
,
num_column_families
:
c_int
,
column_family_names
:
*
const
*
const
i8
,
column_family_names
:
*
const
*
const
i8
,
column_family_options
:
*
const
DBOptions
,
column_family_options
:
*
const
*
const
DBOptions
,
column_family_handles
:
*
const
DBCFHandle
,
column_family_handles
:
*
const
DBCFHandle
,
err
:
*
mut
*
const
i8
err
:
*
mut
*
const
i8
)
->
DBInstance
;
)
->
DBInstance
;
pub
fn
rocksdb_create_column_family
(
db
:
DBInstance
,
pub
fn
rocksdb_create_column_family
(
db
:
DBInstance
,
column_family_options
:
DBOptions
,
column_family_options
:
*
const
DBOptions
,
column_family_name
:
*
const
i8
,
column_family_name
:
*
const
i8
,
err
:
*
mut
*
const
i8
)
err
:
*
mut
*
const
i8
)
->
DBCFHandle
;
->
DBCFHandle
;
...
@@ -499,7 +491,7 @@ mod test {
...
@@ -499,7 +491,7 @@ mod test {
fn
internal
()
{
fn
internal
()
{
unsafe
{
unsafe
{
let
opts
=
rocksdb_options_create
();
let
opts
=
rocksdb_options_create
();
assert
!
(
!
opts
.
0
.
is_null
());
assert
!
(
!
opts
.is_null
());
rocksdb_options_increase_parallelism
(
opts
,
0
);
rocksdb_options_increase_parallelism
(
opts
,
0
);
rocksdb_options_optimize_level_style_compaction
(
opts
,
0
);
rocksdb_options_optimize_level_style_compaction
(
opts
,
0
);
...
@@ -516,12 +508,12 @@ mod test {
...
@@ -516,12 +508,12 @@ mod test {
assert
!
(
err
.is_null
(),
error_message
(
err
));
assert
!
(
err
.is_null
(),
error_message
(
err
));
let
writeopts
=
rocksdb_writeoptions_create
();
let
writeopts
=
rocksdb_writeoptions_create
();
assert
!
(
!
writeopts
.
0
.
is_null
());
assert
!
(
!
writeopts
.is_null
());
let
key
=
b
"name
\x00
"
;
let
key
=
b
"name
\x00
"
;
let
val
=
b
"spacejam
\x00
"
;
let
val
=
b
"spacejam
\x00
"
;
rocksdb_put
(
db
,
rocksdb_put
(
db
,
writeopts
.clone
()
,
writeopts
,
key
.as_ptr
(),
key
.as_ptr
(),
4
,
4
,
val
.as_ptr
(),
val
.as_ptr
(),
...
@@ -531,11 +523,11 @@ mod test {
...
@@ -531,11 +523,11 @@ mod test {
assert
!
(
err
.is_null
(),
error_message
(
err
));
assert
!
(
err
.is_null
(),
error_message
(
err
));
let
readopts
=
rocksdb_readoptions_create
();
let
readopts
=
rocksdb_readoptions_create
();
assert
!
(
!
readopts
.
0
.
is_null
());
assert
!
(
!
readopts
.is_null
());
let
mut
val_len
=
0
;
let
mut
val_len
=
0
;
rocksdb_get
(
db
,
rocksdb_get
(
db
,
readopts
.clone
()
,
readopts
,
key
.as_ptr
(),
key
.as_ptr
(),
4
,
4
,
&
mut
val_len
,
&
mut
val_len
,
...
...
src/lib.rs
View file @
275e39dc
...
@@ -24,9 +24,9 @@ pub mod rocksdb_options;
...
@@ -24,9 +24,9 @@ pub mod rocksdb_options;
pub
mod
merge_operator
;
pub
mod
merge_operator
;
pub
mod
comparator
;
pub
mod
comparator
;
pub
use
librocksdb_sys
::{
DBCompactionStyle
,
DBComparator
,
DBCompressionType
,
DBRecoveryMode
,
pub
use
librocksdb_sys
::{
DBCompactionStyle
,
DBComparator
,
DBCompressionType
,
new_bloom_filter
,
self
as
rocksdb_ffi
};
DBRecoveryMode
,
new_bloom_filter
,
self
as
rocksdb_ffi
};
pub
use
rocksdb
::{
DB
,
DBIterator
,
DBVector
,
Kv
,
ReadOptions
,
SeekKey
,
Writable
,
WriteBatch
};
pub
use
rocksdb_options
::{
BlockBasedOptions
,
Options
,
WriteOptions
};
pub
use
merge_operator
::
MergeOperands
;
pub
use
merge_operator
::
MergeOperands
;
pub
use
rocksdb
::{
DB
,
DBIterator
,
DBVector
,
Kv
,
SeekKey
,
Writable
,
WriteBatch
};
pub
use
rocksdb_options
::{
BlockBasedOptions
,
Options
,
ReadOptions
,
WriteOptions
};
src/rocksdb.rs
View file @
275e39dc
...
@@ -12,6 +12,12 @@
...
@@ -12,6 +12,12 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
//
//
use
libc
::{
self
,
c_int
,
c_void
,
size_t
};
use
rocksdb_ffi
::{
self
,
DBCFHandle
,
error_message
};
use
rocksdb_options
::{
Options
,
ReadOptions
,
UnsafeSnap
,
WriteOptions
};
use
std
::
collections
::
BTreeMap
;
use
std
::
collections
::
BTreeMap
;
use
std
::
ffi
::{
CStr
,
CString
};
use
std
::
ffi
::{
CStr
,
CString
};
use
std
::
fs
;
use
std
::
fs
;
...
@@ -20,11 +26,6 @@ use std::path::Path;
...
@@ -20,11 +26,6 @@ use std::path::Path;
use
std
::
slice
;
use
std
::
slice
;
use
std
::
str
::
from_utf8
;
use
std
::
str
::
from_utf8
;
use
libc
::{
self
,
c_int
,
c_void
,
size_t
};
use
rocksdb_ffi
::{
self
,
DBCFHandle
,
error_message
};
use
rocksdb_options
::{
Options
,
WriteOptions
};
const
DEFAULT_COLUMN_FAMILY
:
&
'static
str
=
"default"
;
const
DEFAULT_COLUMN_FAMILY
:
&
'static
str
=
"default"
;
pub
struct
DB
{
pub
struct
DB
{
...
@@ -40,20 +41,6 @@ pub struct WriteBatch {
...
@@ -40,20 +41,6 @@ pub struct WriteBatch {
inner
:
rocksdb_ffi
::
DBWriteBatch
,
inner
:
rocksdb_ffi
::
DBWriteBatch
,
}
}
pub
struct
ReadOptions
{
inner
:
rocksdb_ffi
::
DBReadOptions
,
upper_bound
:
Vec
<
u8
>
,
}
/// The UnsafeSnap must be destroyed by db, it maybe be leaked
/// if not using it properly, hence named as unsafe.
///
/// This object is convenient for wrapping snapshot by yourself. In most
/// cases, using `Snapshot` is enough.
pub
struct
UnsafeSnap
{
inner
:
rocksdb_ffi
::
DBSnapshot
,
}
pub
struct
Snapshot
<
'a
>
{
pub
struct
Snapshot
<
'a
>
{
db
:
&
'a
DB
,
db
:
&
'a
DB
,
snap
:
UnsafeSnap
,
snap
:
UnsafeSnap
,
...
@@ -82,8 +69,9 @@ impl<'a> From<&'a [u8]> for SeekKey<'a> {
...
@@ -82,8 +69,9 @@ impl<'a> From<&'a [u8]> for SeekKey<'a> {
impl
<
'a
>
DBIterator
<
'a
>
{
impl
<
'a
>
DBIterator
<
'a
>
{
pub
fn
new
(
db
:
&
'a
DB
,
readopts
:
ReadOptions
)
->
DBIterator
<
'a
>
{
pub
fn
new
(
db
:
&
'a
DB
,
readopts
:
ReadOptions
)
->
DBIterator
<
'a
>
{
unsafe
{
unsafe
{
let
iterator
=
rocksdb_ffi
::
rocksdb_create_iterator
(
db
.inner
,
let
iterator
=
readopts
.inner
);
rocksdb_ffi
::
rocksdb_create_iterator
(
db
.inner
,
readopts
.get_inner
());
DBIterator
{
DBIterator
{
db
:
db
,
db
:
db
,
...
@@ -167,7 +155,7 @@ impl<'a> DBIterator<'a> {
...
@@ -167,7 +155,7 @@ impl<'a> DBIterator<'a> {
unsafe
{
unsafe
{
let
iterator
=
let
iterator
=
rocksdb_ffi
::
rocksdb_create_iterator_cf
(
db
.inner
,
rocksdb_ffi
::
rocksdb_create_iterator_cf
(
db
.inner
,
readopts
.
inner
,
readopts
.
get_inner
()
,
cf_handle
);
cf_handle
);
DBIterator
{
DBIterator
{
db
:
db
,
db
:
db
,
...
@@ -342,8 +330,9 @@ impl DB {
...
@@ -342,8 +330,9 @@ impl DB {
.map
(|
_
|
rocksdb_ffi
::
DBCFHandle
(
0
as
*
mut
c_void
))
.map
(|
_
|
rocksdb_ffi
::
DBCFHandle
(
0
as
*
mut
c_void
))
.collect
();
.collect
();
let
cfopts
:
Vec
<
rocksdb_ffi
::
DBOptions
>
=
let
cfopts
:
Vec
<
_
>
=
cf_opts_v
.iter
()
cf_opts_v
.iter
()
.map
(|
x
|
x
.inner
)
.collect
();
.map
(|
x
|
x
.inner
as
*
const
rocksdb_ffi
::
DBOptions
)
.collect
();
let
db
:
rocksdb_ffi
::
DBInstance
;
let
db
:
rocksdb_ffi
::
DBInstance
;
let
mut
err
:
*
const
i8
=
0
as
*
const
i8
;
let
mut
err
:
*
const
i8
=
0
as
*
const
i8
;
...
@@ -454,14 +443,6 @@ impl DB {
...
@@ -454,14 +443,6 @@ impl DB {
key
:
&
[
u8
],
key
:
&
[
u8
],
readopts
:
&
ReadOptions
)
readopts
:
&
ReadOptions
)
->
Result
<
Option
<
DBVector
>
,
String
>
{
->
Result
<
Option
<
DBVector
>
,
String
>
{
if
readopts
.inner
.
0
.is_null
()
{
return
Err
(
"Unable to create rocksdb read options. This is a
\
fairly trivial call, and its failure may be
\
indicative of a mis-compiled or mis-loaded rocksdb
\
library."
.to_owned
());
}
unsafe
{
unsafe
{
let
val_len
:
size_t
=
0
;
let
val_len
:
size_t
=
0
;
let
val_len_ptr
=
&
val_len
as
*
const
size_t
;
let
val_len_ptr
=
&
val_len
as
*
const
size_t
;
...
@@ -469,7 +450,7 @@ impl DB {
...
@@ -469,7 +450,7 @@ impl DB {
let
err_ptr
:
*
mut
*
const
i8
=
&
mut
err
;
let
err_ptr
:
*
mut
*
const
i8
=
&
mut
err
;
let
val
=
let
val
=
rocksdb_ffi
::
rocksdb_get
(
self
.inner
,
rocksdb_ffi
::
rocksdb_get
(
self
.inner
,
readopts
.
inner
,
readopts
.
get_inner
()
,
key
.as_ptr
(),
key
.as_ptr
(),
key
.len
()
as
size_t
,
key
.len
()
as
size_t
,
val_len_ptr
,
val_len_ptr
,
...
@@ -494,14 +475,6 @@ impl DB {
...
@@ -494,14 +475,6 @@ impl DB {
key
:
&
[
u8
],
key
:
&
[
u8
],
readopts
:
&
ReadOptions
)
readopts
:
&
ReadOptions
)
->
Result
<
Option
<
DBVector
>
,
String
>
{
->
Result
<
Option
<
DBVector
>
,
String
>
{
if
readopts
.inner
.
0
.is_null
()
{
return
Err
(
"Unable to create rocksdb read options. This is a
\
fairly trivial call, and its failure may be
\
indicative of a mis-compiled or mis-loaded rocksdb
\
library."
.to_owned
());
}
unsafe
{
unsafe
{
let
val_len
:
size_t
=
0
;
let
val_len
:
size_t
=
0
;
let
val_len_ptr
=
&
val_len
as
*
const
size_t
;
let
val_len_ptr
=
&
val_len
as
*
const
size_t
;
...
@@ -509,7 +482,7 @@ impl DB {
...
@@ -509,7 +482,7 @@ impl DB {
let
err_ptr
:
*
mut
*
const
i8
=
&
mut
err
;
let
err_ptr
:
*
mut
*
const
i8
=
&
mut
err
;
let
val
=
let
val
=
rocksdb_ffi
::
rocksdb_get_cf
(
self
.inner
,
rocksdb_ffi
::
rocksdb_get_cf
(
self
.inner
,
readopts
.
inner
,
readopts
.
get_inner
()
,
cf
,
cf
,
key
.as_ptr
(),
key
.as_ptr
(),
key
.len
()
as
size_t
,
key
.len
()
as
size_t
,
...
@@ -611,11 +584,11 @@ impl DB {
...
@@ -611,11 +584,11 @@ impl DB {
}
}
pub
unsafe
fn
unsafe_snap
(
&
self
)
->
UnsafeSnap
{
pub
unsafe
fn
unsafe_snap
(
&
self
)
->
UnsafeSnap
{
UnsafeSnap
{
inner
:
rocksdb_ffi
::
rocksdb_create_snapshot
(
self
.inner
)
}
UnsafeSnap
::
new
(
self
.inner
)
}
}
pub
unsafe
fn
release_snap
(
&
self
,
snap
:
&
UnsafeSnap
)
{
pub
unsafe
fn
release_snap
(
&
self
,
snap
:
&
UnsafeSnap
)
{
rocksdb_ffi
::
rocksdb_release_snapshot
(
self
.inner
,
snap
.
inner
)
rocksdb_ffi
::
rocksdb_release_snapshot
(
self
.inner
,
snap
.
get_inner
()
)
}
}
pub
fn
put_opt
(
&
self
,
pub
fn
put_opt
(
&
self
,
...
@@ -1095,49 +1068,6 @@ impl Writable for WriteBatch {
...
@@ -1095,49 +1068,6 @@ impl Writable for WriteBatch {
}
}
}
}
impl
Drop
for
ReadOptions
{
fn
drop
(
&
mut
self
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_readoptions_destroy
(
self
.inner
)
}
}
}
impl
Default
for
ReadOptions
{
fn
default
()
->
ReadOptions
{
unsafe
{
ReadOptions
{
inner
:
rocksdb_ffi
::
rocksdb_readoptions_create
(),
upper_bound
:
vec!
[]
}
}
}
}
impl
ReadOptions
{
pub
fn
new
()
->
ReadOptions
{
ReadOptions
::
default
()
}
// TODO add snapshot setting here
// TODO add snapshot wrapper structs with proper destructors;
// that struct needs an "iterator" impl too.
#[allow(dead_code)]
pub
fn
fill_cache
(
&
mut
self
,
v
:
bool
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_readoptions_set_fill_cache
(
self
.inner
,
v
);
}
}
pub
unsafe
fn
set_snapshot
(
&
mut
self
,
snapshot
:
&
UnsafeSnap
)
{
rocksdb_ffi
::
rocksdb_readoptions_set_snapshot
(
self
.inner
,
snapshot
.inner
);
}
pub
fn
set_iterate_upper_bound
(
&
mut
self
,
key
:
&
[
u8
])
{
self
.upper_bound
=
Vec
::
from
(
key
);
unsafe
{
rocksdb_ffi
::
rocksdb_readoptions_set_iterate_upper_bound
(
self
.inner
,
self
.upper_bound
.as_ptr
(),
self
.upper_bound
.len
()
as
size_t
);
}
}
}
pub
struct
DBVector
{
pub
struct
DBVector
{
base
:
*
mut
u8
,
base
:
*
mut
u8
,
len
:
usize
,
len
:
usize
,
...
@@ -1173,9 +1103,9 @@ impl DBVector {
...
@@ -1173,9 +1103,9 @@ impl DBVector {
#[cfg(test)]
#[cfg(test)]
mod
test
{
mod
test
{
use
super
::
*
;
use
rocksdb_options
::
*
;
use
rocksdb_options
::
*
;
use
std
::
str
;
use
std
::
str
;
use
super
::
*
;
use
tempdir
::
TempDir
;
use
tempdir
::
TempDir
;
#[test]
#[test]
...
...
src/rocksdb_options.rs
View file @
275e39dc
...
@@ -12,34 +12,20 @@
...
@@ -12,34 +12,20 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
//
//
use
libc
::{
c_int
,
size_t
};
use
std
::
ffi
::
CString
;
use
std
::
mem
;
use
rocksdb_ffi
::{
self
,
DBCompressionType
,
DBRecoveryMode
};
use
comparator
::{
self
,
ComparatorCallback
,
compare_callback
};
use
libc
::{
c_int
,
size_t
};
use
merge_operator
::{
self
,
MergeOperatorCallback
,
full_merge_callback
,
use
merge_operator
::{
self
,
MergeOperatorCallback
,
full_merge_callback
,
partial_merge_callback
};
partial_merge_callback
};
use
comparator
::{
self
,
ComparatorCallback
,
compare_callback
};
use
merge_operator
::
MergeFn
;
use
merge_operator
::
MergeFn
;
pub
struct
BlockBasedOptions
{
use
rocksdb_ffi
::{
self
,
DBOptions
,
DBWriteOptions
,
DBBlockBasedTableOptions
,
inner
:
rocksdb_ffi
::
DBBlockBasedTableOptions
,
DBReadOptions
,
DBCompressionType
,
DBRecoveryMode
};
}
use
std
::
ffi
::
CString
;
use
std
::
mem
;
pub
struct
Options
{
pub
inner
:
rocksdb_ffi
::
DBOptions
,
}
pub
struct
WriteOptions
{
pub
inner
:
rocksdb_ffi
::
DBWriteOptions
,
}
impl
Drop
for
Options
{
pub
struct
BlockBasedOptions
{
fn
drop
(
&
mut
self
)
{
inner
:
*
mut
DBBlockBasedTableOptions
,
unsafe
{
rocksdb_ffi
::
rocksdb_options_destroy
(
self
.inner
);
}
}
}
}
impl
Drop
for
BlockBasedOptions
{
impl
Drop
for
BlockBasedOptions
{
...
@@ -50,23 +36,14 @@ impl Drop for BlockBasedOptions {
...
@@ -50,23 +36,14 @@ impl Drop for BlockBasedOptions {
}
}
}
}
impl
Drop
for
WriteOptions
{
fn
drop
(
&
mut
self
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_writeoptions_destroy
(
self
.inner
);
}
}
}
impl
Default
for
BlockBasedOptions
{
impl
Default
for
BlockBasedOptions
{
fn
default
()
->
BlockBasedOptions
{
fn
default
()
->
BlockBasedOptions
{
let
block_opts
=
unsafe
{
unsafe
{
rocksdb_ffi
::
rocksdb_block_based_options_create
()
}
;
let
block_opts
=
rocksdb_ffi
::
rocksdb_block_based_options_create
()
;
let
rocksdb_ffi
::
DBBlockBasedTableOptions
(
opt_ptr
)
=
block_opts
;
assert
!
(
!
block_opts
.is_null
(),
if
opt_ptr
.is_null
()
{
"Could not create rocksdb block based options"
);
panic!
(
"Could not create rocksdb block based options"
.to_string
());
BlockBasedOptions
{
inner
:
block_opts
}
}
}
BlockBasedOptions
{
inner
:
block_opts
}
}
}
}
}
...
@@ -114,38 +91,143 @@ impl BlockBasedOptions {
...
@@ -114,38 +91,143 @@ impl BlockBasedOptions {
}
}
}
}
// TODO figure out how to create these in a Rusty way
/// The UnsafeSnap must be destroyed by db, it maybe be leaked
// /pub fn set_filter(&mut self, filter: rocksdb_ffi::DBFilterPolicy) {
/// if not using it properly, hence named as unsafe.
// / unsafe {
///
// / rocksdb_ffi::rocksdb_block_based_options_set_filter_policy(
/// This object is convenient for wrapping snapshot by yourself. In most
// / self.inner, filter);
/// cases, using `Snapshot` is enough.
// / }
pub
struct
UnsafeSnap
{
// /}
inner
:
rocksdb_ffi
::
DBSnapshot
,
}
// /pub fn set_cache(&mut self, cache: rocksdb_ffi::DBCache) {
// / unsafe {
impl
UnsafeSnap
{
// / rocksdb_ffi::rocksdb_block_based_options_set_block_cache(
pub
unsafe
fn
new
(
db
:
rocksdb_ffi
::
DBInstance
)
->
UnsafeSnap
{
// / self.inner, cache);
UnsafeSnap
{
inner
:
rocksdb_ffi
::
rocksdb_create_snapshot
(
db
)
}
// / }
}
// /}
pub
unsafe
fn
get_inner
(
&
self
)
->
rocksdb_ffi
::
DBSnapshot
{
// /pub fn set_cache_compressed(&mut self, cache: rocksdb_ffi::DBCache) {
self
.inner
// / unsafe {
}
// / rocksdb_ffi::
}
// rocksdb_block_based_options_set_block_cache_compressed(
// / self.inner, cache);
pub
struct
ReadOptions
{
// / }
inner
:
*
mut
DBReadOptions
,
// /}
upper_bound
:
Vec
<
u8
>
,
}
impl
Drop
for
ReadOptions
{
fn
drop
(
&
mut
self
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_readoptions_destroy
(
self
.inner
)
}
}
}
impl
Default
for
ReadOptions
{
fn
default
()
->
ReadOptions
{
unsafe
{
let
opts
=
rocksdb_ffi
::
rocksdb_readoptions_create
();
assert
!
(
!
opts
.is_null
(),
"Unable to create rocksdb read options"
);
ReadOptions
{
inner
:
opts
,
upper_bound
:
vec!
[],
}
}
}
}
impl
ReadOptions
{
pub
fn
new
()
->
ReadOptions
{
ReadOptions
::
default
()
}
// TODO add snapshot setting here
// TODO add snapshot wrapper structs with proper destructors;
// that struct needs an "iterator" impl too.
#[allow(dead_code)]
pub
fn
fill_cache
(
&
mut
self
,
v
:
bool
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_readoptions_set_fill_cache
(
self
.inner
,
v
);
}
}
pub
unsafe
fn
set_snapshot
(
&
mut
self
,
snapshot
:
&
UnsafeSnap
)
{
rocksdb_ffi
::
rocksdb_readoptions_set_snapshot
(
self
.inner
,
snapshot
.inner
);
}
pub
fn
set_iterate_upper_bound
(
&
mut
self
,
key
:
&
[
u8
])
{
self
.upper_bound
=
Vec
::
from
(
key
);
unsafe
{
rocksdb_ffi
::
rocksdb_readoptions_set_iterate_upper_bound
(
self
.inner
,
self
.upper_bound
.as_ptr
(),
self
.upper_bound
.len
()
as
size_t
);
}
}
pub
unsafe
fn
get_inner
(
&
self
)
->
*
const
DBReadOptions
{
self
.inner
}
}
pub
struct
WriteOptions
{
pub
inner
:
*
mut
DBWriteOptions
,
}
impl
Drop
for
WriteOptions
{
fn
drop
(
&
mut
self
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_writeoptions_destroy
(
self
.inner
);
}
}
}
impl
Default
for
WriteOptions
{
fn
default
()
->
WriteOptions
{
let
write_opts
=
unsafe
{
rocksdb_ffi
::
rocksdb_writeoptions_create
()
};
assert
!
(
!
write_opts
.is_null
(),
"Could not create rocksdb write options"
);
WriteOptions
{
inner
:
write_opts
}
}
}
impl
WriteOptions
{
pub
fn
new
()
->
WriteOptions
{
WriteOptions
::
default
()
}
pub
fn
set_sync
(
&
mut
self
,
sync
:
bool
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_writeoptions_set_sync
(
self
.inner
,
sync
);
}
}
pub
fn
disable_wal
(
&
mut
self
,
disable
:
bool
)
{
unsafe
{
if
disable
{
rocksdb_ffi
::
rocksdb_writeoptions_disable_WAL
(
self
.inner
,
1
);
}
else
{
rocksdb_ffi
::
rocksdb_writeoptions_disable_WAL
(
self
.inner
,
0
);
}
}
}
}
pub
struct
Options
{
pub
inner
:
*
mut
DBOptions
,
}
impl
Drop
for
Options
{
fn
drop
(
&
mut
self
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_options_destroy
(
self
.inner
);
}
}
}
impl
Default
for
Options
{
impl
Default
for
Options
{
fn
default
()
->
Options
{
fn
default
()
->
Options
{
unsafe
{
unsafe
{
let
opts
=
rocksdb_ffi
::
rocksdb_options_create
();
let
opts
=
rocksdb_ffi
::
rocksdb_options_create
();
let
rocksdb_ffi
::
DBOptions
(
opt_ptr
)
=
opts
;
assert
!
(
!
opts
.is_null
(),
"Could not create rocksdb options"
);
if
opt_ptr
.is_null
()
{
panic!
(
"Could not create rocksdb options"
.to_string
());
}
Options
{
inner
:
opts
}
Options
{
inner
:
opts
}
}
}
}
}
...
@@ -320,7 +402,8 @@ impl Options {
...
@@ -320,7 +402,8 @@ impl Options {
pub
fn
set_max_manifest_file_size
(
&
mut
self
,
size
:
u64
)
{
pub
fn
set_max_manifest_file_size
(
&
mut
self
,
size
:
u64
)
{
unsafe
{
unsafe
{
rocksdb_ffi
::
rocksdb_options_set_max_manifest_file_size
(
self
.inner
,
size
);
rocksdb_ffi
::
rocksdb_options_set_max_manifest_file_size
(
self
.inner
,
size
);
}
}
}
}
...
@@ -418,40 +501,8 @@ impl Options {
...
@@ -418,40 +501,8 @@ impl Options {
pub
fn
set_wal_recovery_mode
(
&
mut
self
,
mode
:
DBRecoveryMode
)
{
pub
fn
set_wal_recovery_mode
(
&
mut
self
,
mode
:
DBRecoveryMode
)
{
unsafe
{
unsafe
{
rocksdb_ffi
::
rocksdb_options_set_wal_recovery_mode
(
self
.inner
,
mode
);
rocksdb_ffi
::
rocksdb_options_set_wal_recovery_mode
(
self
.inner
,
}
mode
);
}
}
impl
Default
for
WriteOptions
{
fn
default
()
->
WriteOptions
{
let
write_opts
=
unsafe
{
rocksdb_ffi
::
rocksdb_writeoptions_create
()
};
let
rocksdb_ffi
::
DBWriteOptions
(
opt_ptr
)
=
write_opts
;
if
opt_ptr
.is_null
()
{
panic!
(
"Could not create rocksdb write options"
.to_string
());
}
WriteOptions
{
inner
:
write_opts
}
}
}
impl
WriteOptions
{
pub
fn
new
()
->
WriteOptions
{
WriteOptions
::
default
()
}
pub
fn
set_sync
(
&
mut
self
,
sync
:
bool
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_writeoptions_set_sync
(
self
.inner
,
sync
);
}
}
pub
fn
disable_wal
(
&
mut
self
,
disable
:
bool
)
{
unsafe
{
if
disable
{
rocksdb_ffi
::
rocksdb_writeoptions_disable_WAL
(
self
.inner
,
1
);
}
else
{
rocksdb_ffi
::
rocksdb_writeoptions_disable_WAL
(
self
.inner
,
0
);
}
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment