Unverified Commit e6492cbc authored by Huachao Huang's avatar Huachao Huang Committed by GitHub

Add FileExists and DeleteFile to Env (#174)

parent 20d39998
...@@ -2877,6 +2877,14 @@ void crocksdb_env_join_all_threads(crocksdb_env_t* env) { ...@@ -2877,6 +2877,14 @@ void crocksdb_env_join_all_threads(crocksdb_env_t* env) {
env->rep->WaitForJoin(); env->rep->WaitForJoin();
} }
void crocksdb_env_file_exists(crocksdb_env_t* env, const char* path, char** errptr) {
SaveError(errptr, env->rep->FileExists(path));
}
void crocksdb_env_delete_file(crocksdb_env_t* env, const char* path, char** errptr) {
SaveError(errptr, env->rep->DeleteFile(path));
}
void crocksdb_env_destroy(crocksdb_env_t* env) { void crocksdb_env_destroy(crocksdb_env_t* env) {
if (!env->is_default) delete env->rep; if (!env->is_default) delete env->rep;
delete env; delete env;
......
...@@ -1194,6 +1194,10 @@ extern C_ROCKSDB_LIBRARY_API void ...@@ -1194,6 +1194,10 @@ extern C_ROCKSDB_LIBRARY_API void
crocksdb_env_set_high_priority_background_threads(crocksdb_env_t* env, int n); crocksdb_env_set_high_priority_background_threads(crocksdb_env_t* env, int n);
extern C_ROCKSDB_LIBRARY_API void crocksdb_env_join_all_threads( extern C_ROCKSDB_LIBRARY_API void crocksdb_env_join_all_threads(
crocksdb_env_t* env); crocksdb_env_t* env);
extern C_ROCKSDB_LIBRARY_API void crocksdb_env_file_exists(
crocksdb_env_t* env, const char* path, char** errptr);
extern C_ROCKSDB_LIBRARY_API void crocksdb_env_delete_file(
crocksdb_env_t* env, const char* path, char** errptr);
extern C_ROCKSDB_LIBRARY_API void crocksdb_env_destroy(crocksdb_env_t*); extern C_ROCKSDB_LIBRARY_API void crocksdb_env_destroy(crocksdb_env_t*);
extern C_ROCKSDB_LIBRARY_API crocksdb_envoptions_t* crocksdb_envoptions_create(); extern C_ROCKSDB_LIBRARY_API crocksdb_envoptions_t* crocksdb_envoptions_create();
......
...@@ -1065,6 +1065,8 @@ extern "C" { ...@@ -1065,6 +1065,8 @@ extern "C" {
// Env // Env
pub fn crocksdb_create_default_env() -> *mut DBEnv; pub fn crocksdb_create_default_env() -> *mut DBEnv;
pub fn crocksdb_create_mem_env() -> *mut DBEnv; pub fn crocksdb_create_mem_env() -> *mut DBEnv;
pub fn crocksdb_env_file_exists(env: *mut DBEnv, path: *const c_char, err: *mut *mut c_char);
pub fn crocksdb_env_delete_file(env: *mut DBEnv, path: *const c_char, err: *mut *mut c_char);
pub fn crocksdb_env_destroy(env: *mut DBEnv); pub fn crocksdb_env_destroy(env: *mut DBEnv);
// EnvOptions // EnvOptions
......
...@@ -1892,6 +1892,22 @@ impl Env { ...@@ -1892,6 +1892,22 @@ impl Env {
Ok(SequentialFile::new(file)) Ok(SequentialFile::new(file))
} }
} }
pub fn file_exists(&self, path: &str) -> Result<(), String> {
unsafe {
let file_path = CString::new(path).unwrap();
ffi_try!(crocksdb_env_file_exists(self.inner, file_path.as_ptr()));
Ok(())
}
}
pub fn delete_file(&self, path: &str) -> Result<(), String> {
unsafe {
let file_path = CString::new(path).unwrap();
ffi_try!(crocksdb_env_delete_file(self.inner, file_path.as_ptr()));
Ok(())
}
}
} }
impl Drop for Env { impl Drop for Env {
......
...@@ -427,4 +427,8 @@ fn test_mem_sst_file_writer() { ...@@ -427,4 +427,8 @@ fn test_mem_sst_file_writer() {
(b"k3", Some(b"v3")), (b"k3", Some(b"v3")),
], ],
); );
assert!(env.file_exists(mem_sst_str).is_ok());
assert!(env.delete_file(mem_sst_str).is_ok());
assert!(env.file_exists(mem_sst_str).is_err());
} }
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