|
15 | 15 | #include "rocksjni/portal.h"
|
16 | 16 | #include "rocksdb/db.h"
|
17 | 17 |
|
| 18 | +void rocksdb_open_helper( |
| 19 | + JNIEnv* env, jobject java_db, jstring jdb_path, const rocksdb::Options& opt) { |
| 20 | + rocksdb::DB* db; |
| 21 | + |
| 22 | + const char* db_path = env->GetStringUTFChars(jdb_path, 0); |
| 23 | + rocksdb::Status s = rocksdb::DB::Open(opt, db_path, &db); |
| 24 | + env->ReleaseStringUTFChars(jdb_path, db_path); |
| 25 | + |
| 26 | + if (s.ok()) { |
| 27 | + rocksdb::RocksDBJni::setHandle(env, java_db, db); |
| 28 | + return; |
| 29 | + } |
| 30 | + rocksdb::RocksDBExceptionJni::ThrowNew(env, s); |
| 31 | +} |
| 32 | + |
18 | 33 | /*
|
19 | 34 | * Class: org_rocksdb_RocksDB
|
20 | 35 | * Method: open0
|
21 | 36 | * Signature: (Ljava/lang/String;)V
|
22 | 37 | */
|
23 | 38 | void Java_org_rocksdb_RocksDB_open0(
|
24 |
| - JNIEnv* env, jobject java_db, jstring jdb_path) { |
25 |
| - rocksdb::DB* db; |
| 39 | + JNIEnv* env, jobject jdb, jstring jdb_path) { |
26 | 40 | rocksdb::Options options;
|
27 | 41 | options.create_if_missing = true;
|
28 | 42 |
|
29 |
| - jboolean isCopy = false; |
30 |
| - const char* db_path = env->GetStringUTFChars(jdb_path, &isCopy); |
31 |
| - rocksdb::Status s = rocksdb::DB::Open(options, db_path, &db); |
32 |
| - env->ReleaseStringUTFChars(jdb_path, db_path); |
| 43 | + rocksdb_open_helper(env, jdb, jdb_path, options); |
| 44 | +} |
33 | 45 |
|
34 |
| - if (s.ok()) { |
35 |
| - rocksdb::RocksDBJni::setHandle(env, java_db, db); |
36 |
| - return; |
37 |
| - } |
38 |
| - rocksdb::RocksDBExceptionJni::ThrowNew(env, s); |
| 46 | +/* |
| 47 | + * Class: org_rocksdb_RocksDB |
| 48 | + * Method: open |
| 49 | + * Signature: (JLjava/lang/String;)V |
| 50 | + */ |
| 51 | +void Java_org_rocksdb_RocksDB_open( |
| 52 | + JNIEnv* env, jobject jdb, jlong jopt_handle, jstring jdb_path) { |
| 53 | + auto options = reinterpret_cast<rocksdb::Options*>(jopt_handle); |
| 54 | + rocksdb_open_helper(env, jdb, jdb_path, *options); |
39 | 55 | }
|
40 | 56 |
|
41 | 57 | /*
|
|
0 commit comments