]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/java/rocksjni/checkpoint.cc
1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under the BSD-style license found in the
3 // LICENSE file in the root directory of this source tree. An additional grant
4 // of patent rights can be found in the PATENTS file in the same directory.
6 // This file implements the "bridge" between Java and C++ and enables
7 // calling c++ rocksdb::Checkpoint methods from Java side.
14 #include "include/org_rocksdb_Checkpoint.h"
15 #include "rocksjni/portal.h"
16 #include "rocksdb/db.h"
17 #include "rocksdb/utilities/checkpoint.h"
19 * Class: org_rocksdb_Checkpoint
20 * Method: newCheckpoint
23 jlong
Java_org_rocksdb_Checkpoint_newCheckpoint(JNIEnv
* env
,
24 jclass jclazz
, jlong jdb_handle
) {
25 auto* db
= reinterpret_cast<rocksdb::DB
*>(jdb_handle
);
26 rocksdb::Checkpoint
* checkpoint
;
27 rocksdb::Checkpoint::Create(db
, &checkpoint
);
28 return reinterpret_cast<jlong
>(checkpoint
);
32 * Class: org_rocksdb_Checkpoint
36 void Java_org_rocksdb_Checkpoint_disposeInternal(JNIEnv
* env
, jobject jobj
,
38 auto* checkpoint
= reinterpret_cast<rocksdb::Checkpoint
*>(jhandle
);
39 assert(checkpoint
!= nullptr);
44 * Class: org_rocksdb_Checkpoint
45 * Method: createCheckpoint
46 * Signature: (JLjava/lang/String;)V
48 void Java_org_rocksdb_Checkpoint_createCheckpoint(
49 JNIEnv
* env
, jobject jobj
, jlong jcheckpoint_handle
,
50 jstring jcheckpoint_path
) {
51 const char* checkpoint_path
= env
->GetStringUTFChars(
53 if(checkpoint_path
== nullptr) {
54 // exception thrown: OutOfMemoryError
58 auto* checkpoint
= reinterpret_cast<rocksdb::Checkpoint
*>(
60 rocksdb::Status s
= checkpoint
->CreateCheckpoint(
63 env
->ReleaseStringUTFChars(jcheckpoint_path
, checkpoint_path
);
66 rocksdb::RocksDBExceptionJni::ThrowNew(env
, s
);