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::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::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::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::CompactionJobInfo
*>(jhandle
);
47 return rocksdb::JniUtil::copyBytes(
48 env
, compact_job_info
->cf_name
);
52 * Class: org_rocksdb_CompactionJobInfo
54 * Signature: (J)Lorg/rocksdb/Status;
56 jobject
Java_org_rocksdb_CompactionJobInfo_status(
57 JNIEnv
* env
, jclass
, jlong jhandle
) {
58 auto* compact_job_info
=
59 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
60 return rocksdb::StatusJni::construct(
61 env
, compact_job_info
->status
);
65 * Class: org_rocksdb_CompactionJobInfo
69 jlong
Java_org_rocksdb_CompactionJobInfo_threadId(
70 JNIEnv
*, jclass
, jlong jhandle
) {
71 auto* compact_job_info
=
72 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
73 return static_cast<jlong
>(compact_job_info
->thread_id
);
77 * Class: org_rocksdb_CompactionJobInfo
81 jint
Java_org_rocksdb_CompactionJobInfo_jobId(
82 JNIEnv
*, jclass
, jlong jhandle
) {
83 auto* compact_job_info
=
84 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
85 return static_cast<jint
>(compact_job_info
->job_id
);
89 * Class: org_rocksdb_CompactionJobInfo
90 * Method: baseInputLevel
93 jint
Java_org_rocksdb_CompactionJobInfo_baseInputLevel(
94 JNIEnv
*, jclass
, jlong jhandle
) {
95 auto* compact_job_info
=
96 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
97 return static_cast<jint
>(compact_job_info
->base_input_level
);
101 * Class: org_rocksdb_CompactionJobInfo
102 * Method: outputLevel
105 jint
Java_org_rocksdb_CompactionJobInfo_outputLevel(
106 JNIEnv
*, jclass
, jlong jhandle
) {
107 auto* compact_job_info
=
108 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
109 return static_cast<jint
>(compact_job_info
->output_level
);
113 * Class: org_rocksdb_CompactionJobInfo
115 * Signature: (J)[Ljava/lang/String;
117 jobjectArray
Java_org_rocksdb_CompactionJobInfo_inputFiles(
118 JNIEnv
* env
, jclass
, jlong jhandle
) {
119 auto* compact_job_info
=
120 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
121 return rocksdb::JniUtil::toJavaStrings(
122 env
, &compact_job_info
->input_files
);
126 * Class: org_rocksdb_CompactionJobInfo
127 * Method: outputFiles
128 * Signature: (J)[Ljava/lang/String;
130 jobjectArray
Java_org_rocksdb_CompactionJobInfo_outputFiles(
131 JNIEnv
* env
, jclass
, jlong jhandle
) {
132 auto* compact_job_info
=
133 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
134 return rocksdb::JniUtil::toJavaStrings(
135 env
, &compact_job_info
->output_files
);
139 * Class: org_rocksdb_CompactionJobInfo
140 * Method: tableProperties
141 * Signature: (J)Ljava/util/Map;
143 jobject
Java_org_rocksdb_CompactionJobInfo_tableProperties(
144 JNIEnv
* env
, jclass
, jlong jhandle
) {
145 auto* compact_job_info
=
146 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
147 auto* map
= &compact_job_info
->table_properties
;
149 jobject jhash_map
= rocksdb::HashMapJni::construct(
150 env
, static_cast<uint32_t>(map
->size()));
151 if (jhash_map
== nullptr) {
152 // exception occurred
156 const rocksdb::HashMapJni::FnMapKV
<const std::string
, std::shared_ptr
<const rocksdb::TableProperties
>, jobject
, jobject
> fn_map_kv
=
157 [env
](const std::pair
<const std::string
, std::shared_ptr
<const rocksdb::TableProperties
>>& kv
) {
158 jstring jkey
= rocksdb::JniUtil::toJavaString(env
, &(kv
.first
), false);
159 if (env
->ExceptionCheck()) {
161 return std::unique_ptr
<std::pair
<jobject
, jobject
>>(nullptr);
164 jobject jtable_properties
= rocksdb::TablePropertiesJni::fromCppTableProperties(
165 env
, *(kv
.second
.get()));
166 if (env
->ExceptionCheck()) {
168 env
->DeleteLocalRef(jkey
);
169 return std::unique_ptr
<std::pair
<jobject
, jobject
>>(nullptr);
172 return std::unique_ptr
<std::pair
<jobject
, jobject
>>(
173 new std::pair
<jobject
, jobject
>(static_cast<jobject
>(jkey
), jtable_properties
));
176 if (!rocksdb::HashMapJni::putAll(env
, jhash_map
, map
->begin(), map
->end(), fn_map_kv
)) {
177 // exception occurred
185 * Class: org_rocksdb_CompactionJobInfo
186 * Method: compactionReason
189 jbyte
Java_org_rocksdb_CompactionJobInfo_compactionReason(
190 JNIEnv
*, jclass
, jlong jhandle
) {
191 auto* compact_job_info
=
192 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
193 return rocksdb::CompactionReasonJni::toJavaCompactionReason(
194 compact_job_info
->compaction_reason
);
198 * Class: org_rocksdb_CompactionJobInfo
199 * Method: compression
202 jbyte
Java_org_rocksdb_CompactionJobInfo_compression(
203 JNIEnv
*, jclass
, jlong jhandle
) {
204 auto* compact_job_info
=
205 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
206 return rocksdb::CompressionTypeJni::toJavaCompressionType(
207 compact_job_info
->compression
);
211 * Class: org_rocksdb_CompactionJobInfo
215 jlong
Java_org_rocksdb_CompactionJobInfo_stats(
216 JNIEnv
*, jclass
, jlong jhandle
) {
217 auto* compact_job_info
=
218 reinterpret_cast<rocksdb::CompactionJobInfo
*>(jhandle
);
219 auto* stats
= new rocksdb::CompactionJobStats();
220 stats
->Add(compact_job_info
->stats
);
221 return reinterpret_cast<jlong
>(stats
);