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
4bc4c325
Commit
4bc4c325
authored
Mar 22, 2017
by
siddontang
Committed by
GitHub
Mar 22, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
create info log (#30)
parent
f6cbc107
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
66 additions
and
0 deletions
+66
-0
c.cc
librocksdb_sys/crocksdb/c.cc
+19
-0
c.h
librocksdb_sys/crocksdb/rocksdb/c.h
+4
-0
lib.rs
librocksdb_sys/src/lib.rs
+7
-0
rocksdb_options.rs
src/rocksdb_options.rs
+21
-0
test_rocksdb_options.rs
tests/test_rocksdb_options.rs
+15
-0
No files found.
librocksdb_sys/crocksdb/c.cc
View file @
4bc4c325
...
@@ -2768,4 +2768,23 @@ void crocksdb_delete_file_in_range_cf(
...
@@ -2768,4 +2768,23 @@ void crocksdb_delete_file_in_range_cf(
void
crocksdb_free
(
void
*
ptr
)
{
free
(
ptr
);
}
void
crocksdb_free
(
void
*
ptr
)
{
free
(
ptr
);
}
crocksdb_logger_t
*
crocksdb_create_log_from_options
(
const
char
*
path
,
crocksdb_options_t
*
opts
,
char
**
errptr
)
{
crocksdb_logger_t
*
logger
=
new
crocksdb_logger_t
;
if
(
SaveError
(
errptr
,
CreateLoggerFromOptions
(
std
::
string
(
path
),
opts
->
rep
,
&
logger
->
rep
)))
{
delete
logger
;
return
NULL
;
}
return
logger
;
}
void
crocksdb_log_destroy
(
crocksdb_logger_t
*
logger
)
{
delete
logger
;
}
}
// end extern "C"
}
// end extern "C"
librocksdb_sys/crocksdb/rocksdb/c.h
View file @
4bc4c325
...
@@ -1115,6 +1115,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_delete_file_in_range_cf(
...
@@ -1115,6 +1115,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_delete_file_in_range_cf(
// to free memory that was malloc()ed
// to free memory that was malloc()ed
extern
C_ROCKSDB_LIBRARY_API
void
crocksdb_free
(
void
*
ptr
);
extern
C_ROCKSDB_LIBRARY_API
void
crocksdb_free
(
void
*
ptr
);
extern
C_ROCKSDB_LIBRARY_API
crocksdb_logger_t
*
crocksdb_create_log_from_options
(
const
char
*
path
,
crocksdb_options_t
*
opts
,
char
**
errptr
);
extern
C_ROCKSDB_LIBRARY_API
void
crocksdb_log_destroy
(
crocksdb_logger_t
*
);
#ifdef __cplusplus
#ifdef __cplusplus
}
/* end extern "C" */
}
/* end extern "C" */
#endif
#endif
...
...
librocksdb_sys/src/lib.rs
View file @
4bc4c325
...
@@ -42,6 +42,7 @@ pub enum DBBackupEngine {}
...
@@ -42,6 +42,7 @@ pub enum DBBackupEngine {}
pub
enum
DBRestoreOptions
{}
pub
enum
DBRestoreOptions
{}
pub
enum
DBSliceTransform
{}
pub
enum
DBSliceTransform
{}
pub
enum
DBRateLimiter
{}
pub
enum
DBRateLimiter
{}
pub
enum
DBLogger
{}
pub
fn
new_bloom_filter
(
bits
:
c_int
)
->
*
mut
DBFilterPolicy
{
pub
fn
new_bloom_filter
(
bits
:
c_int
)
->
*
mut
DBFilterPolicy
{
unsafe
{
crocksdb_filterpolicy_create_bloom
(
bits
)
}
unsafe
{
crocksdb_filterpolicy_create_bloom
(
bits
)
}
...
@@ -272,6 +273,7 @@ extern "C" {
...
@@ -272,6 +273,7 @@ extern "C" {
pub
fn
crocksdb_options_set_memtable_prefix_bloom_size_ratio
(
options
:
*
mut
DBOptions
,
pub
fn
crocksdb_options_set_memtable_prefix_bloom_size_ratio
(
options
:
*
mut
DBOptions
,
ratio
:
c_double
);
ratio
:
c_double
);
pub
fn
crocksdb_options_set_ratelimiter
(
options
:
*
mut
DBOptions
,
limiter
:
*
mut
DBRateLimiter
);
pub
fn
crocksdb_options_set_ratelimiter
(
options
:
*
mut
DBOptions
,
limiter
:
*
mut
DBRateLimiter
);
pub
fn
crocksdb_options_set_info_log
(
options
:
*
mut
DBOptions
,
logger
:
*
mut
DBLogger
);
pub
fn
crocksdb_ratelimiter_create
(
rate_bytes_per_sec
:
i64
,
pub
fn
crocksdb_ratelimiter_create
(
rate_bytes_per_sec
:
i64
,
refill_period_us
:
i64
,
refill_period_us
:
i64
,
fairness
:
i32
)
fairness
:
i32
)
...
@@ -702,6 +704,11 @@ extern "C" {
...
@@ -702,6 +704,11 @@ extern "C" {
name
:
extern
"C"
fn
(
*
mut
c_void
)
->
*
const
c_char
)
name
:
extern
"C"
fn
(
*
mut
c_void
)
->
*
const
c_char
)
->
*
mut
DBSliceTransform
;
->
*
mut
DBSliceTransform
;
pub
fn
crocksdb_slicetransform_destroy
(
transform
:
*
mut
DBSliceTransform
);
pub
fn
crocksdb_slicetransform_destroy
(
transform
:
*
mut
DBSliceTransform
);
pub
fn
crocksdb_create_log_from_options
(
path
:
*
const
c_char
,
options
:
*
mut
DBOptions
,
err
:
*
mut
*
mut
c_char
)
->
*
mut
DBLogger
;
pub
fn
crocksdb_log_destroy
(
logger
:
*
mut
DBLogger
);
}
}
#[cfg(test)]
#[cfg(test)]
...
...
src/rocksdb_options.rs
View file @
4bc4c325
...
@@ -731,6 +731,27 @@ impl Options {
...
@@ -731,6 +731,27 @@ impl Options {
crocksdb_ffi
::
crocksdb_options_set_ratelimiter
(
self
.inner
,
rate_limiter
.inner
);
crocksdb_ffi
::
crocksdb_options_set_ratelimiter
(
self
.inner
,
rate_limiter
.inner
);
}
}
}
}
// Create a info log with `path` and save to options logger field directly.
// TODO: export more logger options like level, roll size, time, etc...
pub
fn
create_info_log
(
&
self
,
path
:
&
str
)
->
Result
<
(),
String
>
{
let
cpath
=
match
CString
::
new
(
path
.as_bytes
())
{
Ok
(
c
)
=>
c
,
Err
(
_
)
=>
{
return
Err
(
"Failed to convert path to CString when creating rocksdb info log"
.to_owned
())
}
};
unsafe
{
let
logger
=
ffi_try!
(
crocksdb_create_log_from_options
(
cpath
.as_ptr
(),
self
.inner
));
crocksdb_ffi
::
crocksdb_options_set_info_log
(
self
.inner
,
logger
);
// logger uses shared_ptr, it is OK to destroy here.
crocksdb_ffi
::
crocksdb_log_destroy
(
logger
);
}
Ok
(())
}
}
}
pub
struct
FlushOptions
{
pub
struct
FlushOptions
{
...
...
tests/test_rocksdb_options.rs
View file @
4bc4c325
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
use
rocksdb
::{
DB
,
Options
,
WriteOptions
,
SliceTransform
};
use
rocksdb
::{
DB
,
Options
,
WriteOptions
,
SliceTransform
};
use
rocksdb
::
crocksdb_ffi
::{
DBStatisticsHistogramType
as
HistogramType
,
use
rocksdb
::
crocksdb_ffi
::{
DBStatisticsHistogramType
as
HistogramType
,
DBStatisticsTickerType
as
TickerType
};
DBStatisticsTickerType
as
TickerType
};
use
std
::
path
::
Path
;
use
tempdir
::
TempDir
;
use
tempdir
::
TempDir
;
...
@@ -132,3 +133,17 @@ fn test_set_wal_opt() {
...
@@ -132,3 +133,17 @@ fn test_set_wal_opt() {
drop
(
db
);
drop
(
db
);
}
}
#[test]
fn
test_create_info_log
()
{
let
path
=
TempDir
::
new
(
"_rust_rocksdb_test_create_info_log_opt"
)
.expect
(
""
);
let
mut
opts
=
Options
::
new
();
opts
.create_if_missing
(
true
);
let
info_dir
=
TempDir
::
new
(
"_rust_rocksdb_test_info_log_dir"
)
.expect
(
""
);
opts
.create_info_log
(
info_dir
.path
()
.to_str
()
.unwrap
())
.unwrap
();
let
db
=
DB
::
open
(
opts
,
path
.path
()
.to_str
()
.unwrap
())
.unwrap
();
assert
!
(
Path
::
new
(
info_dir
.path
()
.join
(
"LOG"
)
.to_str
()
.unwrap
())
.is_file
());
drop
(
db
);
}
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