1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under both the GPLv2 (found in the
3 // COPYING file in the root directory) and Apache 2.0 License
4 // (found in the LICENSE.Apache file in the root directory).
6 // This file implements the "bridge" between Java and C++ for
7 // ROCKSDB_NAMESPACE::CompactionJobInfo.
11 #include "include/org_rocksdb_CompactionJobInfo.h"
12 #include "rocksdb/listener.h"
13 #include "rocksjni/portal.h"
16 * Class: org_rocksdb_CompactionJobInfo
17 * Method: newCompactionJobInfo
20 jlong
Java_org_rocksdb_CompactionJobInfo_newCompactionJobInfo(
22 auto* compact_job_info
= new ROCKSDB_NAMESPACE::CompactionJobInfo();
23 return reinterpret_cast<jlong
>(compact_job_info
);
27 * Class: org_rocksdb_CompactionJobInfo
28 * Method: disposeInternal
31 void Java_org_rocksdb_CompactionJobInfo_disposeInternal(
32 JNIEnv
*, jobject
, jlong jhandle
) {
33 auto* compact_job_info
=
34 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
35 delete compact_job_info
;
39 * Class: org_rocksdb_CompactionJobInfo
40 * Method: columnFamilyName
43 jbyteArray
Java_org_rocksdb_CompactionJobInfo_columnFamilyName(
44 JNIEnv
* env
, jclass
, jlong jhandle
) {
45 auto* compact_job_info
=
46 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
47 return ROCKSDB_NAMESPACE::JniUtil::copyBytes(env
, compact_job_info
->cf_name
);
51 * Class: org_rocksdb_CompactionJobInfo
53 * Signature: (J)Lorg/rocksdb/Status;
55 jobject
Java_org_rocksdb_CompactionJobInfo_status(
56 JNIEnv
* env
, jclass
, jlong jhandle
) {
57 auto* compact_job_info
=
58 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
59 return ROCKSDB_NAMESPACE::StatusJni::construct(env
, compact_job_info
->status
);
63 * Class: org_rocksdb_CompactionJobInfo
67 jlong
Java_org_rocksdb_CompactionJobInfo_threadId(
68 JNIEnv
*, jclass
, jlong jhandle
) {
69 auto* compact_job_info
=
70 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
71 return static_cast<jlong
>(compact_job_info
->thread_id
);
75 * Class: org_rocksdb_CompactionJobInfo
79 jint
Java_org_rocksdb_CompactionJobInfo_jobId(
80 JNIEnv
*, jclass
, jlong jhandle
) {
81 auto* compact_job_info
=
82 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
83 return static_cast<jint
>(compact_job_info
->job_id
);
87 * Class: org_rocksdb_CompactionJobInfo
88 * Method: baseInputLevel
91 jint
Java_org_rocksdb_CompactionJobInfo_baseInputLevel(
92 JNIEnv
*, jclass
, jlong jhandle
) {
93 auto* compact_job_info
=
94 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
95 return static_cast<jint
>(compact_job_info
->base_input_level
);
99 * Class: org_rocksdb_CompactionJobInfo
100 * Method: outputLevel
103 jint
Java_org_rocksdb_CompactionJobInfo_outputLevel(
104 JNIEnv
*, jclass
, jlong jhandle
) {
105 auto* compact_job_info
=
106 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
107 return static_cast<jint
>(compact_job_info
->output_level
);
111 * Class: org_rocksdb_CompactionJobInfo
113 * Signature: (J)[Ljava/lang/String;
115 jobjectArray
Java_org_rocksdb_CompactionJobInfo_inputFiles(
116 JNIEnv
* env
, jclass
, jlong jhandle
) {
117 auto* compact_job_info
=
118 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
119 return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(
120 env
, &compact_job_info
->input_files
);
124 * Class: org_rocksdb_CompactionJobInfo
125 * Method: outputFiles
126 * Signature: (J)[Ljava/lang/String;
128 jobjectArray
Java_org_rocksdb_CompactionJobInfo_outputFiles(
129 JNIEnv
* env
, jclass
, jlong jhandle
) {
130 auto* compact_job_info
=
131 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
132 return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(
133 env
, &compact_job_info
->output_files
);
137 * Class: org_rocksdb_CompactionJobInfo
138 * Method: tableProperties
139 * Signature: (J)Ljava/util/Map;
141 jobject
Java_org_rocksdb_CompactionJobInfo_tableProperties(
142 JNIEnv
* env
, jclass
, jlong jhandle
) {
143 auto* compact_job_info
=
144 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
145 auto* map
= &compact_job_info
->table_properties
;
147 jobject jhash_map
= ROCKSDB_NAMESPACE::HashMapJni::construct(
148 env
, static_cast<uint32_t>(map
->size()));
149 if (jhash_map
== nullptr) {
150 // exception occurred
154 const ROCKSDB_NAMESPACE::HashMapJni::FnMapKV
<
156 std::shared_ptr
<const ROCKSDB_NAMESPACE::TableProperties
>, jobject
,
159 [env
](const std::pair
<
161 std::shared_ptr
<const ROCKSDB_NAMESPACE::TableProperties
>>&
163 jstring jkey
= ROCKSDB_NAMESPACE::JniUtil::toJavaString(
164 env
, &(kv
.first
), false);
165 if (env
->ExceptionCheck()) {
167 return std::unique_ptr
<std::pair
<jobject
, jobject
>>(nullptr);
170 jobject jtable_properties
=
171 ROCKSDB_NAMESPACE::TablePropertiesJni::fromCppTableProperties(
172 env
, *(kv
.second
.get()));
173 if (env
->ExceptionCheck()) {
175 env
->DeleteLocalRef(jkey
);
176 return std::unique_ptr
<std::pair
<jobject
, jobject
>>(nullptr);
179 return std::unique_ptr
<std::pair
<jobject
, jobject
>>(
180 new std::pair
<jobject
, jobject
>(static_cast<jobject
>(jkey
),
184 if (!ROCKSDB_NAMESPACE::HashMapJni::putAll(env
, jhash_map
, map
->begin(),
185 map
->end(), fn_map_kv
)) {
186 // exception occurred
194 * Class: org_rocksdb_CompactionJobInfo
195 * Method: compactionReason
198 jbyte
Java_org_rocksdb_CompactionJobInfo_compactionReason(
199 JNIEnv
*, jclass
, jlong jhandle
) {
200 auto* compact_job_info
=
201 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
202 return ROCKSDB_NAMESPACE::CompactionReasonJni::toJavaCompactionReason(
203 compact_job_info
->compaction_reason
);
207 * Class: org_rocksdb_CompactionJobInfo
208 * Method: compression
211 jbyte
Java_org_rocksdb_CompactionJobInfo_compression(
212 JNIEnv
*, jclass
, jlong jhandle
) {
213 auto* compact_job_info
=
214 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
215 return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType(
216 compact_job_info
->compression
);
220 * Class: org_rocksdb_CompactionJobInfo
224 jlong
Java_org_rocksdb_CompactionJobInfo_stats(
225 JNIEnv
*, jclass
, jlong jhandle
) {
226 auto* compact_job_info
=
227 reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo
*>(jhandle
);
228 auto* stats
= new ROCKSDB_NAMESPACE::CompactionJobStats();
229 stats
->Add(compact_job_info
->stats
);
230 return reinterpret_cast<jlong
>(stats
);