]> git.proxmox.com Git - ceph.git/blame - ceph/src/rocksdb/java/rocksjni/backupablejni.cc
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / rocksdb / java / rocksjni / backupablejni.cc
CommitLineData
7c673cae 1// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
11fdf7f2
TL
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).
7c673cae
FG
5//
6// This file implements the "bridge" between Java and C++ and enables
f67539c2
TL
7// calling c++ ROCKSDB_NAMESPACE::BackupEnginge and
8// ROCKSDB_NAMESPACE::BackupableDBOptions methods from Java side.
7c673cae 9
11fdf7f2 10#include <jni.h>
7c673cae
FG
11#include <stdio.h>
12#include <stdlib.h>
7c673cae
FG
13#include <string>
14#include <vector>
15
16#include "include/org_rocksdb_BackupableDBOptions.h"
7c673cae 17#include "rocksdb/utilities/backupable_db.h"
11fdf7f2 18#include "rocksjni/portal.h"
7c673cae
FG
19
20///////////////////////////////////////////////////////////////////////////
21// BackupDBOptions
22
23/*
24 * Class: org_rocksdb_BackupableDBOptions
25 * Method: newBackupableDBOptions
26 * Signature: (Ljava/lang/String;)J
27 */
28jlong Java_org_rocksdb_BackupableDBOptions_newBackupableDBOptions(
11fdf7f2 29 JNIEnv* env, jclass /*jcls*/, jstring jpath) {
7c673cae 30 const char* cpath = env->GetStringUTFChars(jpath, nullptr);
11fdf7f2 31 if (cpath == nullptr) {
7c673cae
FG
32 // exception thrown: OutOfMemoryError
33 return 0;
34 }
f67539c2 35 auto* bopt = new ROCKSDB_NAMESPACE::BackupableDBOptions(cpath);
7c673cae
FG
36 env->ReleaseStringUTFChars(jpath, cpath);
37 return reinterpret_cast<jlong>(bopt);
38}
39
40/*
41 * Class: org_rocksdb_BackupableDBOptions
42 * Method: backupDir
43 * Signature: (J)Ljava/lang/String;
44 */
11fdf7f2
TL
45jstring Java_org_rocksdb_BackupableDBOptions_backupDir(JNIEnv* env,
46 jobject /*jopt*/,
47 jlong jhandle) {
f67539c2
TL
48 auto* bopt =
49 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
50 return env->NewStringUTF(bopt->backup_dir.c_str());
51}
52
53/*
54 * Class: org_rocksdb_BackupableDBOptions
55 * Method: setBackupEnv
56 * Signature: (JJ)V
57 */
58void Java_org_rocksdb_BackupableDBOptions_setBackupEnv(
11fdf7f2 59 JNIEnv* /*env*/, jobject /*jopt*/, jlong jhandle, jlong jrocks_env_handle) {
f67539c2
TL
60 auto* bopt =
61 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
62 auto* rocks_env =
63 reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jrocks_env_handle);
7c673cae
FG
64 bopt->backup_env = rocks_env;
65}
66
67/*
68 * Class: org_rocksdb_BackupableDBOptions
69 * Method: setShareTableFiles
70 * Signature: (JZ)V
71 */
11fdf7f2
TL
72void Java_org_rocksdb_BackupableDBOptions_setShareTableFiles(JNIEnv* /*env*/,
73 jobject /*jobj*/,
74 jlong jhandle,
75 jboolean flag) {
f67539c2
TL
76 auto* bopt =
77 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
78 bopt->share_table_files = flag;
79}
80
81/*
82 * Class: org_rocksdb_BackupableDBOptions
83 * Method: shareTableFiles
84 * Signature: (J)Z
85 */
11fdf7f2
TL
86jboolean Java_org_rocksdb_BackupableDBOptions_shareTableFiles(JNIEnv* /*env*/,
87 jobject /*jobj*/,
88 jlong jhandle) {
f67539c2
TL
89 auto* bopt =
90 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
91 return bopt->share_table_files;
92}
93
94/*
95 * Class: org_rocksdb_BackupableDBOptions
96 * Method: setInfoLog
97 * Signature: (JJ)V
98 */
11fdf7f2
TL
99void Java_org_rocksdb_BackupableDBOptions_setInfoLog(JNIEnv* /*env*/,
100 jobject /*jobj*/,
101 jlong jhandle,
102 jlong /*jlogger_handle*/) {
f67539c2
TL
103 auto* bopt =
104 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae 105 auto* sptr_logger =
f67539c2
TL
106 reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::LoggerJniCallback>*>(
107 jhandle);
7c673cae
FG
108 bopt->info_log = sptr_logger->get();
109}
110
111/*
112 * Class: org_rocksdb_BackupableDBOptions
113 * Method: setSync
114 * Signature: (JZ)V
115 */
11fdf7f2
TL
116void Java_org_rocksdb_BackupableDBOptions_setSync(JNIEnv* /*env*/,
117 jobject /*jobj*/,
118 jlong jhandle,
119 jboolean flag) {
f67539c2
TL
120 auto* bopt =
121 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
122 bopt->sync = flag;
123}
124
125/*
126 * Class: org_rocksdb_BackupableDBOptions
127 * Method: sync
128 * Signature: (J)Z
129 */
11fdf7f2
TL
130jboolean Java_org_rocksdb_BackupableDBOptions_sync(JNIEnv* /*env*/,
131 jobject /*jobj*/,
132 jlong jhandle) {
f67539c2
TL
133 auto* bopt =
134 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
135 return bopt->sync;
136}
137
138/*
139 * Class: org_rocksdb_BackupableDBOptions
140 * Method: setDestroyOldData
141 * Signature: (JZ)V
142 */
11fdf7f2
TL
143void Java_org_rocksdb_BackupableDBOptions_setDestroyOldData(JNIEnv* /*env*/,
144 jobject /*jobj*/,
145 jlong jhandle,
146 jboolean flag) {
f67539c2
TL
147 auto* bopt =
148 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
149 bopt->destroy_old_data = flag;
150}
151
152/*
153 * Class: org_rocksdb_BackupableDBOptions
154 * Method: destroyOldData
155 * Signature: (J)Z
156 */
11fdf7f2
TL
157jboolean Java_org_rocksdb_BackupableDBOptions_destroyOldData(JNIEnv* /*env*/,
158 jobject /*jobj*/,
159 jlong jhandle) {
f67539c2
TL
160 auto* bopt =
161 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
162 return bopt->destroy_old_data;
163}
164
165/*
166 * Class: org_rocksdb_BackupableDBOptions
167 * Method: setBackupLogFiles
168 * Signature: (JZ)V
169 */
11fdf7f2
TL
170void Java_org_rocksdb_BackupableDBOptions_setBackupLogFiles(JNIEnv* /*env*/,
171 jobject /*jobj*/,
172 jlong jhandle,
173 jboolean flag) {
f67539c2
TL
174 auto* bopt =
175 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
176 bopt->backup_log_files = flag;
177}
178
179/*
180 * Class: org_rocksdb_BackupableDBOptions
181 * Method: backupLogFiles
182 * Signature: (J)Z
183 */
11fdf7f2
TL
184jboolean Java_org_rocksdb_BackupableDBOptions_backupLogFiles(JNIEnv* /*env*/,
185 jobject /*jobj*/,
186 jlong jhandle) {
f67539c2
TL
187 auto* bopt =
188 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
189 return bopt->backup_log_files;
190}
191
192/*
193 * Class: org_rocksdb_BackupableDBOptions
194 * Method: setBackupRateLimit
195 * Signature: (JJ)V
196 */
197void Java_org_rocksdb_BackupableDBOptions_setBackupRateLimit(
11fdf7f2
TL
198 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
199 jlong jbackup_rate_limit) {
f67539c2
TL
200 auto* bopt =
201 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
202 bopt->backup_rate_limit = jbackup_rate_limit;
203}
204
205/*
206 * Class: org_rocksdb_BackupableDBOptions
207 * Method: backupRateLimit
208 * Signature: (J)J
209 */
11fdf7f2
TL
210jlong Java_org_rocksdb_BackupableDBOptions_backupRateLimit(JNIEnv* /*env*/,
211 jobject /*jobj*/,
212 jlong jhandle) {
f67539c2
TL
213 auto* bopt =
214 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
215 return bopt->backup_rate_limit;
216}
217
218/*
219 * Class: org_rocksdb_BackupableDBOptions
220 * Method: setBackupRateLimiter
221 * Signature: (JJ)V
222 */
223void Java_org_rocksdb_BackupableDBOptions_setBackupRateLimiter(
11fdf7f2
TL
224 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
225 jlong jrate_limiter_handle) {
f67539c2
TL
226 auto* bopt =
227 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae 228 auto* sptr_rate_limiter =
f67539c2 229 reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(
11fdf7f2 230 jrate_limiter_handle);
7c673cae
FG
231 bopt->backup_rate_limiter = *sptr_rate_limiter;
232}
233
234/*
235 * Class: org_rocksdb_BackupableDBOptions
236 * Method: setRestoreRateLimit
237 * Signature: (JJ)V
238 */
239void Java_org_rocksdb_BackupableDBOptions_setRestoreRateLimit(
11fdf7f2
TL
240 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
241 jlong jrestore_rate_limit) {
f67539c2
TL
242 auto* bopt =
243 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
244 bopt->restore_rate_limit = jrestore_rate_limit;
245}
246
247/*
248 * Class: org_rocksdb_BackupableDBOptions
249 * Method: restoreRateLimit
250 * Signature: (J)J
251 */
11fdf7f2
TL
252jlong Java_org_rocksdb_BackupableDBOptions_restoreRateLimit(JNIEnv* /*env*/,
253 jobject /*jobj*/,
254 jlong jhandle) {
f67539c2
TL
255 auto* bopt =
256 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
257 return bopt->restore_rate_limit;
258}
259
260/*
261 * Class: org_rocksdb_BackupableDBOptions
262 * Method: setRestoreRateLimiter
263 * Signature: (JJ)V
264 */
265void Java_org_rocksdb_BackupableDBOptions_setRestoreRateLimiter(
11fdf7f2
TL
266 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
267 jlong jrate_limiter_handle) {
f67539c2
TL
268 auto* bopt =
269 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae 270 auto* sptr_rate_limiter =
f67539c2 271 reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(
11fdf7f2 272 jrate_limiter_handle);
7c673cae
FG
273 bopt->restore_rate_limiter = *sptr_rate_limiter;
274}
275
276/*
277 * Class: org_rocksdb_BackupableDBOptions
278 * Method: setShareFilesWithChecksum
279 * Signature: (JZ)V
280 */
281void Java_org_rocksdb_BackupableDBOptions_setShareFilesWithChecksum(
11fdf7f2 282 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jboolean flag) {
f67539c2
TL
283 auto* bopt =
284 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
285 bopt->share_files_with_checksum = flag;
286}
287
288/*
289 * Class: org_rocksdb_BackupableDBOptions
290 * Method: shareFilesWithChecksum
291 * Signature: (J)Z
292 */
293jboolean Java_org_rocksdb_BackupableDBOptions_shareFilesWithChecksum(
11fdf7f2 294 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) {
f67539c2
TL
295 auto* bopt =
296 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
297 return bopt->share_files_with_checksum;
298}
299
300/*
301 * Class: org_rocksdb_BackupableDBOptions
302 * Method: setMaxBackgroundOperations
303 * Signature: (JI)V
304 */
305void Java_org_rocksdb_BackupableDBOptions_setMaxBackgroundOperations(
11fdf7f2
TL
306 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
307 jint max_background_operations) {
f67539c2
TL
308 auto* bopt =
309 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
11fdf7f2 310 bopt->max_background_operations = static_cast<int>(max_background_operations);
7c673cae
FG
311}
312
313/*
314 * Class: org_rocksdb_BackupableDBOptions
315 * Method: maxBackgroundOperations
316 * Signature: (J)I
317 */
318jint Java_org_rocksdb_BackupableDBOptions_maxBackgroundOperations(
11fdf7f2 319 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) {
f67539c2
TL
320 auto* bopt =
321 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
322 return static_cast<jint>(bopt->max_background_operations);
323}
324
325/*
326 * Class: org_rocksdb_BackupableDBOptions
327 * Method: setCallbackTriggerIntervalSize
328 * Signature: (JJ)V
329 */
330void Java_org_rocksdb_BackupableDBOptions_setCallbackTriggerIntervalSize(
11fdf7f2 331 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
7c673cae 332 jlong jcallback_trigger_interval_size) {
f67539c2
TL
333 auto* bopt =
334 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
335 bopt->callback_trigger_interval_size =
336 static_cast<uint64_t>(jcallback_trigger_interval_size);
337}
338
339/*
340 * Class: org_rocksdb_BackupableDBOptions
341 * Method: callbackTriggerIntervalSize
342 * Signature: (J)J
343 */
344jlong Java_org_rocksdb_BackupableDBOptions_callbackTriggerIntervalSize(
11fdf7f2 345 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) {
f67539c2
TL
346 auto* bopt =
347 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
348 return static_cast<jlong>(bopt->callback_trigger_interval_size);
349}
350
351/*
352 * Class: org_rocksdb_BackupableDBOptions
353 * Method: disposeInternal
354 * Signature: (J)V
355 */
11fdf7f2
TL
356void Java_org_rocksdb_BackupableDBOptions_disposeInternal(JNIEnv* /*env*/,
357 jobject /*jopt*/,
358 jlong jhandle) {
f67539c2
TL
359 auto* bopt =
360 reinterpret_cast<ROCKSDB_NAMESPACE::BackupableDBOptions*>(jhandle);
7c673cae
FG
361 assert(bopt != nullptr);
362 delete bopt;
363}