]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/java/rocksjni/compaction_job_info.cc
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / rocksdb / java / rocksjni / compaction_job_info.cc
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).
5 //
6 // This file implements the "bridge" between Java and C++ for
7 // ROCKSDB_NAMESPACE::CompactionJobInfo.
8
9 #include <jni.h>
10
11 #include "include/org_rocksdb_CompactionJobInfo.h"
12 #include "rocksdb/listener.h"
13 #include "rocksjni/portal.h"
14
15 /*
16 * Class: org_rocksdb_CompactionJobInfo
17 * Method: newCompactionJobInfo
18 * Signature: ()J
19 */
20 jlong Java_org_rocksdb_CompactionJobInfo_newCompactionJobInfo(
21 JNIEnv*, jclass) {
22 auto* compact_job_info = new ROCKSDB_NAMESPACE::CompactionJobInfo();
23 return reinterpret_cast<jlong>(compact_job_info);
24 }
25
26 /*
27 * Class: org_rocksdb_CompactionJobInfo
28 * Method: disposeInternal
29 * Signature: (J)V
30 */
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;
36 }
37
38 /*
39 * Class: org_rocksdb_CompactionJobInfo
40 * Method: columnFamilyName
41 * Signature: (J)[B
42 */
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);
48 }
49
50 /*
51 * Class: org_rocksdb_CompactionJobInfo
52 * Method: status
53 * Signature: (J)Lorg/rocksdb/Status;
54 */
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);
60 }
61
62 /*
63 * Class: org_rocksdb_CompactionJobInfo
64 * Method: threadId
65 * Signature: (J)J
66 */
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);
72 }
73
74 /*
75 * Class: org_rocksdb_CompactionJobInfo
76 * Method: jobId
77 * Signature: (J)I
78 */
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);
84 }
85
86 /*
87 * Class: org_rocksdb_CompactionJobInfo
88 * Method: baseInputLevel
89 * Signature: (J)I
90 */
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);
96 }
97
98 /*
99 * Class: org_rocksdb_CompactionJobInfo
100 * Method: outputLevel
101 * Signature: (J)I
102 */
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);
108 }
109
110 /*
111 * Class: org_rocksdb_CompactionJobInfo
112 * Method: inputFiles
113 * Signature: (J)[Ljava/lang/String;
114 */
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);
121 }
122
123 /*
124 * Class: org_rocksdb_CompactionJobInfo
125 * Method: outputFiles
126 * Signature: (J)[Ljava/lang/String;
127 */
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);
134 }
135
136 /*
137 * Class: org_rocksdb_CompactionJobInfo
138 * Method: tableProperties
139 * Signature: (J)Ljava/util/Map;
140 */
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;
146
147 jobject jhash_map = ROCKSDB_NAMESPACE::HashMapJni::construct(
148 env, static_cast<uint32_t>(map->size()));
149 if (jhash_map == nullptr) {
150 // exception occurred
151 return nullptr;
152 }
153
154 const ROCKSDB_NAMESPACE::HashMapJni::FnMapKV<
155 const std::string,
156 std::shared_ptr<const ROCKSDB_NAMESPACE::TableProperties>, jobject,
157 jobject>
158 fn_map_kv =
159 [env](const std::pair<
160 const std::string,
161 std::shared_ptr<const ROCKSDB_NAMESPACE::TableProperties>>&
162 kv) {
163 jstring jkey = ROCKSDB_NAMESPACE::JniUtil::toJavaString(
164 env, &(kv.first), false);
165 if (env->ExceptionCheck()) {
166 // an error occurred
167 return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
168 }
169
170 jobject jtable_properties =
171 ROCKSDB_NAMESPACE::TablePropertiesJni::fromCppTableProperties(
172 env, *(kv.second.get()));
173 if (env->ExceptionCheck()) {
174 // an error occurred
175 env->DeleteLocalRef(jkey);
176 return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
177 }
178
179 return std::unique_ptr<std::pair<jobject, jobject>>(
180 new std::pair<jobject, jobject>(static_cast<jobject>(jkey),
181 jtable_properties));
182 };
183
184 if (!ROCKSDB_NAMESPACE::HashMapJni::putAll(env, jhash_map, map->begin(),
185 map->end(), fn_map_kv)) {
186 // exception occurred
187 return nullptr;
188 }
189
190 return jhash_map;
191 }
192
193 /*
194 * Class: org_rocksdb_CompactionJobInfo
195 * Method: compactionReason
196 * Signature: (J)B
197 */
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);
204 }
205
206 /*
207 * Class: org_rocksdb_CompactionJobInfo
208 * Method: compression
209 * Signature: (J)B
210 */
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);
217 }
218
219 /*
220 * Class: org_rocksdb_CompactionJobInfo
221 * Method: stats
222 * Signature: (J)J
223 */
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);
231 }