| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674 |
- // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
- // This source code is licensed under both the GPLv2 (found in the
- // COPYING file in the root directory) and Apache 2.0 License
- // (found in the LICENSE.Apache file in the root directory).
- //
- // This file implements the "bridge" between Java and C++ and enables
- // calling c++ ROCKSDB_NAMESPACE::WriteBatch methods from Java side.
- #include <memory>
- #include "db/memtable.h"
- #include "db/write_batch_internal.h"
- #include "include/org_rocksdb_WriteBatch.h"
- #include "include/org_rocksdb_WriteBatch_Handler.h"
- #include "logging/logging.h"
- #include "rocksdb/db.h"
- #include "rocksdb/env.h"
- #include "rocksdb/memtablerep.h"
- #include "rocksdb/status.h"
- #include "rocksdb/write_batch.h"
- #include "rocksdb/write_buffer_manager.h"
- #include "rocksjni/portal.h"
- #include "rocksjni/writebatchhandlerjnicallback.h"
- #include "table/scoped_arena_iterator.h"
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: newWriteBatch
- * Signature: (I)J
- */
- jlong Java_org_rocksdb_WriteBatch_newWriteBatch__I(JNIEnv* /*env*/,
- jclass /*jcls*/,
- jint jreserved_bytes) {
- auto* wb =
- new ROCKSDB_NAMESPACE::WriteBatch(static_cast<size_t>(jreserved_bytes));
- return reinterpret_cast<jlong>(wb);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: newWriteBatch
- * Signature: ([BI)J
- */
- jlong Java_org_rocksdb_WriteBatch_newWriteBatch___3BI(JNIEnv* env,
- jclass /*jcls*/,
- jbyteArray jserialized,
- jint jserialized_length) {
- jboolean has_exception = JNI_FALSE;
- std::string serialized = ROCKSDB_NAMESPACE::JniUtil::byteString<std::string>(
- env, jserialized, jserialized_length,
- [](const char* str, const size_t len) { return std::string(str, len); },
- &has_exception);
- if (has_exception == JNI_TRUE) {
- // exception occurred
- return 0;
- }
- auto* wb = new ROCKSDB_NAMESPACE::WriteBatch(serialized);
- return reinterpret_cast<jlong>(wb);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: count0
- * Signature: (J)I
- */
- jint Java_org_rocksdb_WriteBatch_count0(JNIEnv* /*env*/, jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return static_cast<jint>(wb->Count());
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: clear0
- * Signature: (J)V
- */
- void Java_org_rocksdb_WriteBatch_clear0(JNIEnv* /*env*/, jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- wb->Clear();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: setSavePoint0
- * Signature: (J)V
- */
- void Java_org_rocksdb_WriteBatch_setSavePoint0(JNIEnv* /*env*/,
- jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- wb->SetSavePoint();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: rollbackToSavePoint0
- * Signature: (J)V
- */
- void Java_org_rocksdb_WriteBatch_rollbackToSavePoint0(JNIEnv* env,
- jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto s = wb->RollbackToSavePoint();
- if (s.ok()) {
- return;
- }
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: popSavePoint
- * Signature: (J)V
- */
- void Java_org_rocksdb_WriteBatch_popSavePoint(JNIEnv* env, jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto s = wb->PopSavePoint();
- if (s.ok()) {
- return;
- }
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: setMaxBytes
- * Signature: (JJ)V
- */
- void Java_org_rocksdb_WriteBatch_setMaxBytes(JNIEnv* /*env*/, jobject /*jobj*/,
- jlong jwb_handle,
- jlong jmax_bytes) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- wb->SetMaxBytes(static_cast<size_t>(jmax_bytes));
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: put
- * Signature: (J[BI[BI)V
- */
- void Java_org_rocksdb_WriteBatch_put__J_3BI_3BI(JNIEnv* env, jobject jobj,
- jlong jwb_handle,
- jbyteArray jkey, jint jkey_len,
- jbyteArray jentry_value,
- jint jentry_value_len) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto put = [&wb](ROCKSDB_NAMESPACE::Slice key,
- ROCKSDB_NAMESPACE::Slice value) {
- return wb->Put(key, value);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::kv_op(put, env, jobj, jkey, jkey_len,
- jentry_value, jentry_value_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: put
- * Signature: (J[BI[BIJ)V
- */
- void Java_org_rocksdb_WriteBatch_put__J_3BI_3BIJ(
- JNIEnv* env, jobject jobj, jlong jwb_handle, jbyteArray jkey, jint jkey_len,
- jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- assert(cf_handle != nullptr);
- auto put = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice key,
- ROCKSDB_NAMESPACE::Slice value) {
- return wb->Put(cf_handle, key, value);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::kv_op(put, env, jobj, jkey, jkey_len,
- jentry_value, jentry_value_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: putDirect
- * Signature: (JLjava/nio/ByteBuffer;IILjava/nio/ByteBuffer;IIJ)V
- */
- void Java_org_rocksdb_WriteBatch_putDirect(JNIEnv* env, jobject /*jobj*/,
- jlong jwb_handle, jobject jkey,
- jint jkey_offset, jint jkey_len,
- jobject jval, jint jval_offset,
- jint jval_len, jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- auto put = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice& key,
- ROCKSDB_NAMESPACE::Slice& value) {
- if (cf_handle == nullptr) {
- wb->Put(key, value);
- } else {
- wb->Put(cf_handle, key, value);
- }
- };
- ROCKSDB_NAMESPACE::JniUtil::kv_op_direct(
- put, env, jkey, jkey_offset, jkey_len, jval, jval_offset, jval_len);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: merge
- * Signature: (J[BI[BI)V
- */
- void Java_org_rocksdb_WriteBatch_merge__J_3BI_3BI(
- JNIEnv* env, jobject jobj, jlong jwb_handle, jbyteArray jkey, jint jkey_len,
- jbyteArray jentry_value, jint jentry_value_len) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto merge = [&wb](ROCKSDB_NAMESPACE::Slice key,
- ROCKSDB_NAMESPACE::Slice value) {
- return wb->Merge(key, value);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::kv_op(merge, env, jobj, jkey, jkey_len,
- jentry_value, jentry_value_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: merge
- * Signature: (J[BI[BIJ)V
- */
- void Java_org_rocksdb_WriteBatch_merge__J_3BI_3BIJ(
- JNIEnv* env, jobject jobj, jlong jwb_handle, jbyteArray jkey, jint jkey_len,
- jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- assert(cf_handle != nullptr);
- auto merge = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice key,
- ROCKSDB_NAMESPACE::Slice value) {
- return wb->Merge(cf_handle, key, value);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::kv_op(merge, env, jobj, jkey, jkey_len,
- jentry_value, jentry_value_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: delete
- * Signature: (J[BI)V
- */
- void Java_org_rocksdb_WriteBatch_delete__J_3BI(JNIEnv* env, jobject jobj,
- jlong jwb_handle,
- jbyteArray jkey, jint jkey_len) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto remove = [&wb](ROCKSDB_NAMESPACE::Slice key) { return wb->Delete(key); };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::k_op(remove, env, jobj, jkey, jkey_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: delete
- * Signature: (J[BIJ)V
- */
- void Java_org_rocksdb_WriteBatch_delete__J_3BIJ(JNIEnv* env, jobject jobj,
- jlong jwb_handle,
- jbyteArray jkey, jint jkey_len,
- jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- assert(cf_handle != nullptr);
- auto remove = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice key) {
- return wb->Delete(cf_handle, key);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::k_op(remove, env, jobj, jkey, jkey_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: singleDelete
- * Signature: (J[BI)V
- */
- void Java_org_rocksdb_WriteBatch_singleDelete__J_3BI(JNIEnv* env, jobject jobj,
- jlong jwb_handle,
- jbyteArray jkey,
- jint jkey_len) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto single_delete = [&wb](ROCKSDB_NAMESPACE::Slice key) {
- return wb->SingleDelete(key);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::k_op(single_delete, env, jobj, jkey,
- jkey_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: singleDelete
- * Signature: (J[BIJ)V
- */
- void Java_org_rocksdb_WriteBatch_singleDelete__J_3BIJ(JNIEnv* env, jobject jobj,
- jlong jwb_handle,
- jbyteArray jkey,
- jint jkey_len,
- jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- assert(cf_handle != nullptr);
- auto single_delete = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice key) {
- return wb->SingleDelete(cf_handle, key);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::k_op(single_delete, env, jobj, jkey,
- jkey_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: removeDirect
- * Signature: (JLjava/nio/ByteBuffer;IIJ)V
- */
- void Java_org_rocksdb_WriteBatch_removeDirect(JNIEnv* env, jobject /*jobj*/,
- jlong jwb_handle, jobject jkey,
- jint jkey_offset, jint jkey_len,
- jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- auto remove = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice& key) {
- if (cf_handle == nullptr) {
- wb->Delete(key);
- } else {
- wb->Delete(cf_handle, key);
- }
- };
- ROCKSDB_NAMESPACE::JniUtil::k_op_direct(remove, env, jkey, jkey_offset,
- jkey_len);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: deleteRange
- * Signature: (J[BI[BI)V
- */
- void Java_org_rocksdb_WriteBatch_deleteRange__J_3BI_3BI(
- JNIEnv* env, jobject jobj, jlong jwb_handle, jbyteArray jbegin_key,
- jint jbegin_key_len, jbyteArray jend_key, jint jend_key_len) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto deleteRange = [&wb](ROCKSDB_NAMESPACE::Slice beginKey,
- ROCKSDB_NAMESPACE::Slice endKey) {
- return wb->DeleteRange(beginKey, endKey);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::kv_op(deleteRange, env, jobj, jbegin_key,
- jbegin_key_len, jend_key, jend_key_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: deleteRange
- * Signature: (J[BI[BIJ)V
- */
- void Java_org_rocksdb_WriteBatch_deleteRange__J_3BI_3BIJ(
- JNIEnv* env, jobject jobj, jlong jwb_handle, jbyteArray jbegin_key,
- jint jbegin_key_len, jbyteArray jend_key, jint jend_key_len,
- jlong jcf_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto* cf_handle =
- reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
- assert(cf_handle != nullptr);
- auto deleteRange = [&wb, &cf_handle](ROCKSDB_NAMESPACE::Slice beginKey,
- ROCKSDB_NAMESPACE::Slice endKey) {
- return wb->DeleteRange(cf_handle, beginKey, endKey);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::kv_op(deleteRange, env, jobj, jbegin_key,
- jbegin_key_len, jend_key, jend_key_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: putLogData
- * Signature: (J[BI)V
- */
- void Java_org_rocksdb_WriteBatch_putLogData(JNIEnv* env, jobject jobj,
- jlong jwb_handle, jbyteArray jblob,
- jint jblob_len) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto putLogData = [&wb](ROCKSDB_NAMESPACE::Slice blob) {
- return wb->PutLogData(blob);
- };
- std::unique_ptr<ROCKSDB_NAMESPACE::Status> status =
- ROCKSDB_NAMESPACE::JniUtil::k_op(putLogData, env, jobj, jblob, jblob_len);
- if (status != nullptr && !status->ok()) {
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, status);
- }
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: iterate
- * Signature: (JJ)V
- */
- void Java_org_rocksdb_WriteBatch_iterate(JNIEnv* env, jobject /*jobj*/,
- jlong jwb_handle,
- jlong handlerHandle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- ROCKSDB_NAMESPACE::Status s = wb->Iterate(
- reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatchHandlerJniCallback*>(
- handlerHandle));
- if (s.ok()) {
- return;
- }
- ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: data
- * Signature: (J)[B
- */
- jbyteArray Java_org_rocksdb_WriteBatch_data(JNIEnv* env, jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto data = wb->Data();
- return ROCKSDB_NAMESPACE::JniUtil::copyBytes(env, data);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: getDataSize
- * Signature: (J)J
- */
- jlong Java_org_rocksdb_WriteBatch_getDataSize(JNIEnv* /*env*/, jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto data_size = wb->GetDataSize();
- return static_cast<jlong>(data_size);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasPut
- * Signature: (J)Z
- */
- jboolean Java_org_rocksdb_WriteBatch_hasPut(JNIEnv* /*env*/, jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasPut();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasDelete
- * Signature: (J)Z
- */
- jboolean Java_org_rocksdb_WriteBatch_hasDelete(JNIEnv* /*env*/,
- jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasDelete();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasSingleDelete
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasSingleDelete(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasSingleDelete();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasDeleteRange
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasDeleteRange(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasDeleteRange();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasMerge
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasMerge(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasMerge();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasBeginPrepare
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasBeginPrepare(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasBeginPrepare();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasEndPrepare
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasEndPrepare(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasEndPrepare();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasCommit
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasCommit(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasCommit();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: hasRollback
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_org_rocksdb_WriteBatch_hasRollback(
- JNIEnv* /*env*/, jobject /*jobj*/, jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- return wb->HasRollback();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: markWalTerminationPoint
- * Signature: (J)V
- */
- void Java_org_rocksdb_WriteBatch_markWalTerminationPoint(JNIEnv* /*env*/,
- jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- wb->MarkWalTerminationPoint();
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: getWalTerminationPoint
- * Signature: (J)Lorg/rocksdb/WriteBatch/SavePoint;
- */
- jobject Java_org_rocksdb_WriteBatch_getWalTerminationPoint(JNIEnv* env,
- jobject /*jobj*/,
- jlong jwb_handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
- assert(wb != nullptr);
- auto save_point = wb->GetWalTerminationPoint();
- return ROCKSDB_NAMESPACE::WriteBatchSavePointJni::construct(env, save_point);
- }
- /*
- * Class: org_rocksdb_WriteBatch
- * Method: disposeInternal
- * Signature: (J)V
- */
- void Java_org_rocksdb_WriteBatch_disposeInternal(JNIEnv* /*env*/,
- jobject /*jobj*/,
- jlong handle) {
- auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(handle);
- assert(wb != nullptr);
- delete wb;
- }
- /*
- * Class: org_rocksdb_WriteBatch_Handler
- * Method: createNewHandler0
- * Signature: ()J
- */
- jlong Java_org_rocksdb_WriteBatch_00024Handler_createNewHandler0(JNIEnv* env,
- jobject jobj) {
- auto* wbjnic = new ROCKSDB_NAMESPACE::WriteBatchHandlerJniCallback(env, jobj);
- return reinterpret_cast<jlong>(wbjnic);
- }
|