]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/java/rocksjni/compaction_job_info.cc
import 14.2.4 nautilus point release
[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::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::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::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::CompactionJobInfo*>(jhandle);
47 return rocksdb::JniUtil::copyBytes(
48 env, compact_job_info->cf_name);
49 }
50
51 /*
52 * Class: org_rocksdb_CompactionJobInfo
53 * Method: status
54 * Signature: (J)Lorg/rocksdb/Status;
55 */
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);
62 }
63
64 /*
65 * Class: org_rocksdb_CompactionJobInfo
66 * Method: threadId
67 * Signature: (J)J
68 */
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);
74 }
75
76 /*
77 * Class: org_rocksdb_CompactionJobInfo
78 * Method: jobId
79 * Signature: (J)I
80 */
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);
86 }
87
88 /*
89 * Class: org_rocksdb_CompactionJobInfo
90 * Method: baseInputLevel
91 * Signature: (J)I
92 */
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);
98 }
99
100 /*
101 * Class: org_rocksdb_CompactionJobInfo
102 * Method: outputLevel
103 * Signature: (J)I
104 */
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);
110 }
111
112 /*
113 * Class: org_rocksdb_CompactionJobInfo
114 * Method: inputFiles
115 * Signature: (J)[Ljava/lang/String;
116 */
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);
123 }
124
125 /*
126 * Class: org_rocksdb_CompactionJobInfo
127 * Method: outputFiles
128 * Signature: (J)[Ljava/lang/String;
129 */
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);
136 }
137
138 /*
139 * Class: org_rocksdb_CompactionJobInfo
140 * Method: tableProperties
141 * Signature: (J)Ljava/util/Map;
142 */
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;
148
149 jobject jhash_map = rocksdb::HashMapJni::construct(
150 env, static_cast<uint32_t>(map->size()));
151 if (jhash_map == nullptr) {
152 // exception occurred
153 return nullptr;
154 }
155
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()) {
160 // an error occurred
161 return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
162 }
163
164 jobject jtable_properties = rocksdb::TablePropertiesJni::fromCppTableProperties(
165 env, *(kv.second.get()));
166 if (env->ExceptionCheck()) {
167 // an error occurred
168 env->DeleteLocalRef(jkey);
169 return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
170 }
171
172 return std::unique_ptr<std::pair<jobject, jobject>>(
173 new std::pair<jobject, jobject>(static_cast<jobject>(jkey), jtable_properties));
174 };
175
176 if (!rocksdb::HashMapJni::putAll(env, jhash_map, map->begin(), map->end(), fn_map_kv)) {
177 // exception occurred
178 return nullptr;
179 }
180
181 return jhash_map;
182 }
183
184 /*
185 * Class: org_rocksdb_CompactionJobInfo
186 * Method: compactionReason
187 * Signature: (J)B
188 */
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);
195 }
196
197 /*
198 * Class: org_rocksdb_CompactionJobInfo
199 * Method: compression
200 * Signature: (J)B
201 */
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);
208 }
209
210 /*
211 * Class: org_rocksdb_CompactionJobInfo
212 * Method: stats
213 * Signature: (J)J
214 */
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);
222 }