#include <jni.h>
#include "include/org_rocksdb_CompactRangeOptions.h"
#include "rocksdb/options.h"
#include "rocksjni/cplusplus_to_java_convert.h"
#include "rocksjni/portal.h"
#include "util/coding.h"
class Java_org_rocksdb_CompactRangeOptions {
public:
ROCKSDB_NAMESPACE::CompactRangeOptions compactRangeOptions;
private:
std::string full_history_ts_low;
std::atomic<bool> canceled;
public:
void set_full_history_ts_low(uint64_t start, uint64_t range) {
full_history_ts_low = "";
ROCKSDB_NAMESPACE::PutFixed64(&full_history_ts_low, start);
ROCKSDB_NAMESPACE::PutFixed64(&full_history_ts_low, range);
compactRangeOptions.full_history_ts_low =
new ROCKSDB_NAMESPACE::Slice(full_history_ts_low);
}
bool read_full_history_ts_low(uint64_t* start, uint64_t* range) {
if (compactRangeOptions.full_history_ts_low == nullptr) return false;
ROCKSDB_NAMESPACE::Slice read_slice(
compactRangeOptions.full_history_ts_low->ToStringView());
if (!ROCKSDB_NAMESPACE::GetFixed64(&read_slice, start)) return false;
return ROCKSDB_NAMESPACE::GetFixed64(&read_slice, range);
}
void set_canceled(bool value) {
if (compactRangeOptions.canceled == nullptr) {
canceled.store(value, std::memory_order_seq_cst);
compactRangeOptions.canceled = &canceled;
} else {
compactRangeOptions.canceled->store(value, std::memory_order_seq_cst);
}
}
bool get_canceled() {
return compactRangeOptions.canceled &&
compactRangeOptions.canceled->load(std::memory_order_seq_cst);
}
};
jlong Java_org_rocksdb_CompactRangeOptions_newCompactRangeOptions(
JNIEnv* , jclass ) {
auto* options = new Java_org_rocksdb_CompactRangeOptions();
return GET_CPLUSPLUS_POINTER(&options->compactRangeOptions);
}
jboolean Java_org_rocksdb_CompactRangeOptions_exclusiveManualCompaction(
JNIEnv* , jclass , jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return static_cast<jboolean>(
options->compactRangeOptions.exclusive_manual_compaction);
}
void Java_org_rocksdb_CompactRangeOptions_setExclusiveManualCompaction(
JNIEnv* , jclass , jlong jhandle,
jboolean exclusive_manual_compaction) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.exclusive_manual_compaction =
static_cast<bool>(exclusive_manual_compaction);
}
jint Java_org_rocksdb_CompactRangeOptions_bottommostLevelCompaction(
JNIEnv* , jclass , jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return ROCKSDB_NAMESPACE::BottommostLevelCompactionJni::
toJavaBottommostLevelCompaction(
options->compactRangeOptions.bottommost_level_compaction);
}
void Java_org_rocksdb_CompactRangeOptions_setBottommostLevelCompaction(
JNIEnv* , jclass , jlong jhandle,
jint bottommost_level_compaction) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.bottommost_level_compaction =
ROCKSDB_NAMESPACE::BottommostLevelCompactionJni::
toCppBottommostLevelCompaction(bottommost_level_compaction);
}
jboolean Java_org_rocksdb_CompactRangeOptions_changeLevel(JNIEnv* ,
jclass ,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return static_cast<jboolean>(options->compactRangeOptions.change_level);
}
void Java_org_rocksdb_CompactRangeOptions_setChangeLevel(
JNIEnv* , jclass , jlong jhandle, jboolean change_level) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.change_level = static_cast<bool>(change_level);
}
jint Java_org_rocksdb_CompactRangeOptions_targetLevel(JNIEnv* ,
jclass ,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return static_cast<jint>(options->compactRangeOptions.target_level);
}
void Java_org_rocksdb_CompactRangeOptions_setTargetLevel(JNIEnv* ,
jclass ,
jlong jhandle,
jint target_level) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.target_level = static_cast<int>(target_level);
}
jint Java_org_rocksdb_CompactRangeOptions_targetPathId(JNIEnv* ,
jclass ,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return static_cast<jint>(options->compactRangeOptions.target_path_id);
}
void Java_org_rocksdb_CompactRangeOptions_setTargetPathId(JNIEnv* ,
jclass ,
jlong jhandle,
jint target_path_id) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.target_path_id =
static_cast<uint32_t>(target_path_id);
}
jboolean Java_org_rocksdb_CompactRangeOptions_allowWriteStall(JNIEnv* ,
jclass ,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return static_cast<jboolean>(options->compactRangeOptions.allow_write_stall);
}
void Java_org_rocksdb_CompactRangeOptions_setAllowWriteStall(
JNIEnv* , jclass , jlong jhandle,
jboolean allow_write_stall) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.allow_write_stall =
static_cast<bool>(allow_write_stall);
}
jint Java_org_rocksdb_CompactRangeOptions_maxSubcompactions(JNIEnv* ,
jclass ,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return static_cast<jint>(options->compactRangeOptions.max_subcompactions);
}
void Java_org_rocksdb_CompactRangeOptions_setMaxSubcompactions(
JNIEnv* , jclass , jlong jhandle, jint max_subcompactions) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->compactRangeOptions.max_subcompactions =
static_cast<uint32_t>(max_subcompactions);
}
void Java_org_rocksdb_CompactRangeOptions_setFullHistoryTSLow(JNIEnv*, jclass,
jlong jhandle,
jlong start,
jlong range) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->set_full_history_ts_low(start, range);
}
jobject Java_org_rocksdb_CompactRangeOptions_fullHistoryTSLow(JNIEnv* env,
jclass,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
uint64_t start;
uint64_t range;
jobject result = nullptr;
if (options->read_full_history_ts_low(&start, &range)) {
result =
ROCKSDB_NAMESPACE::CompactRangeOptionsTimestampJni::fromCppTimestamp(
env, start, range);
}
return result;
}
void Java_org_rocksdb_CompactRangeOptions_setCanceled(JNIEnv*, jclass,
jlong jhandle,
jboolean jcanceled) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
options->set_canceled(jcanceled);
}
jboolean Java_org_rocksdb_CompactRangeOptions_canceled(JNIEnv*, jclass,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
return options->get_canceled();
}
void Java_org_rocksdb_CompactRangeOptions_disposeInternalJni(JNIEnv* ,
jclass ,
jlong jhandle) {
auto* options =
reinterpret_cast<Java_org_rocksdb_CompactRangeOptions*>(jhandle);
delete options;
}