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