backup_engine_options.cc 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  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::BackupEngineOptions methods from Java side.
  9. #include <jni.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string>
  13. #include <vector>
  14. #include "include/org_rocksdb_BackupEngineOptions.h"
  15. #include "rocksdb/utilities/backup_engine.h"
  16. #include "rocksjni/cplusplus_to_java_convert.h"
  17. #include "rocksjni/portal.h"
  18. ///////////////////////////////////////////////////////////////////////////
  19. // BackupDBOptions
  20. /*
  21. * Class: org_rocksdb_BackupEngineOptions
  22. * Method: newBackupEngineOptions
  23. * Signature: (Ljava/lang/String;)J
  24. */
  25. jlong Java_org_rocksdb_BackupEngineOptions_newBackupEngineOptions(
  26. JNIEnv* env, jclass /*jcls*/, jstring jpath) {
  27. const char* cpath = env->GetStringUTFChars(jpath, nullptr);
  28. if (cpath == nullptr) {
  29. // exception thrown: OutOfMemoryError
  30. return 0;
  31. }
  32. auto* bopt = new ROCKSDB_NAMESPACE::BackupEngineOptions(cpath);
  33. env->ReleaseStringUTFChars(jpath, cpath);
  34. return GET_CPLUSPLUS_POINTER(bopt);
  35. }
  36. /*
  37. * Class: org_rocksdb_BackupEngineOptions
  38. * Method: backupDir
  39. * Signature: (J)Ljava/lang/String;
  40. */
  41. jstring Java_org_rocksdb_BackupEngineOptions_backupDir(JNIEnv* env,
  42. jclass /*jcls*/,
  43. jlong jhandle) {
  44. auto* bopt =
  45. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  46. return env->NewStringUTF(bopt->backup_dir.c_str());
  47. }
  48. /*
  49. * Class: org_rocksdb_BackupEngineOptions
  50. * Method: setBackupEnv
  51. * Signature: (JJ)V
  52. */
  53. void Java_org_rocksdb_BackupEngineOptions_setBackupEnv(
  54. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle, jlong jrocks_env_handle) {
  55. auto* bopt =
  56. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  57. auto* rocks_env =
  58. reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jrocks_env_handle);
  59. bopt->backup_env = rocks_env;
  60. }
  61. /*
  62. * Class: org_rocksdb_BackupEngineOptions
  63. * Method: setShareTableFiles
  64. * Signature: (JZ)V
  65. */
  66. void Java_org_rocksdb_BackupEngineOptions_setShareTableFiles(JNIEnv* /*env*/,
  67. jclass /*jcls*/,
  68. jlong jhandle,
  69. jboolean flag) {
  70. auto* bopt =
  71. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  72. bopt->share_table_files = flag;
  73. }
  74. /*
  75. * Class: org_rocksdb_BackupEngineOptions
  76. * Method: shareTableFiles
  77. * Signature: (J)Z
  78. */
  79. jboolean Java_org_rocksdb_BackupEngineOptions_shareTableFiles(JNIEnv* /*env*/,
  80. jclass /*jcls*/,
  81. jlong jhandle) {
  82. auto* bopt =
  83. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  84. return bopt->share_table_files;
  85. }
  86. /*
  87. * Class: org_rocksdb_BackupEngineOptions
  88. * Method: setInfoLog
  89. * Signature: (JJ)V
  90. */
  91. void Java_org_rocksdb_BackupEngineOptions_setInfoLog(JNIEnv* /*env*/,
  92. jclass /*jcls*/,
  93. jlong jhandle,
  94. jlong /*jlogger_handle*/) {
  95. auto* bopt =
  96. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  97. auto* sptr_logger =
  98. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::LoggerJniCallback>*>(
  99. jhandle);
  100. bopt->info_log = sptr_logger->get();
  101. }
  102. /*
  103. * Class: org_rocksdb_BackupEngineOptions
  104. * Method: setSync
  105. * Signature: (JZ)V
  106. */
  107. void Java_org_rocksdb_BackupEngineOptions_setSync(JNIEnv* /*env*/,
  108. jclass /*jcls*/,
  109. jlong jhandle,
  110. jboolean flag) {
  111. auto* bopt =
  112. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  113. bopt->sync = flag;
  114. }
  115. /*
  116. * Class: org_rocksdb_BackupEngineOptions
  117. * Method: sync
  118. * Signature: (J)Z
  119. */
  120. jboolean Java_org_rocksdb_BackupEngineOptions_sync(JNIEnv* /*env*/,
  121. jclass /*jcls*/,
  122. jlong jhandle) {
  123. auto* bopt =
  124. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  125. return bopt->sync;
  126. }
  127. /*
  128. * Class: org_rocksdb_BackupEngineOptions
  129. * Method: setDestroyOldData
  130. * Signature: (JZ)V
  131. */
  132. void Java_org_rocksdb_BackupEngineOptions_setDestroyOldData(JNIEnv* /*env*/,
  133. jclass /*jcls*/,
  134. jlong jhandle,
  135. jboolean flag) {
  136. auto* bopt =
  137. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  138. bopt->destroy_old_data = flag;
  139. }
  140. /*
  141. * Class: org_rocksdb_BackupEngineOptions
  142. * Method: destroyOldData
  143. * Signature: (J)Z
  144. */
  145. jboolean Java_org_rocksdb_BackupEngineOptions_destroyOldData(JNIEnv* /*env*/,
  146. jclass /*jcls*/,
  147. jlong jhandle) {
  148. auto* bopt =
  149. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  150. return bopt->destroy_old_data;
  151. }
  152. /*
  153. * Class: org_rocksdb_BackupEngineOptions
  154. * Method: setBackupLogFiles
  155. * Signature: (JZ)V
  156. */
  157. void Java_org_rocksdb_BackupEngineOptions_setBackupLogFiles(JNIEnv* /*env*/,
  158. jclass /*jcls*/,
  159. jlong jhandle,
  160. jboolean flag) {
  161. auto* bopt =
  162. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  163. bopt->backup_log_files = flag;
  164. }
  165. /*
  166. * Class: org_rocksdb_BackupEngineOptions
  167. * Method: backupLogFiles
  168. * Signature: (J)Z
  169. */
  170. jboolean Java_org_rocksdb_BackupEngineOptions_backupLogFiles(JNIEnv* /*env*/,
  171. jclass /*jcls*/,
  172. jlong jhandle) {
  173. auto* bopt =
  174. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  175. return bopt->backup_log_files;
  176. }
  177. /*
  178. * Class: org_rocksdb_BackupEngineOptions
  179. * Method: setBackupRateLimit
  180. * Signature: (JJ)V
  181. */
  182. void Java_org_rocksdb_BackupEngineOptions_setBackupRateLimit(
  183. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle, jlong jbackup_rate_limit) {
  184. auto* bopt =
  185. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  186. bopt->backup_rate_limit = jbackup_rate_limit;
  187. }
  188. /*
  189. * Class: org_rocksdb_BackupEngineOptions
  190. * Method: backupRateLimit
  191. * Signature: (J)J
  192. */
  193. jlong Java_org_rocksdb_BackupEngineOptions_backupRateLimit(JNIEnv* /*env*/,
  194. jclass /*jcls*/,
  195. jlong jhandle) {
  196. auto* bopt =
  197. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  198. return bopt->backup_rate_limit;
  199. }
  200. /*
  201. * Class: org_rocksdb_BackupEngineOptions
  202. * Method: setBackupRateLimiter
  203. * Signature: (JJ)V
  204. */
  205. void Java_org_rocksdb_BackupEngineOptions_setBackupRateLimiter(
  206. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle,
  207. jlong jrate_limiter_handle) {
  208. auto* bopt =
  209. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  210. auto* sptr_rate_limiter =
  211. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(
  212. jrate_limiter_handle);
  213. bopt->backup_rate_limiter = *sptr_rate_limiter;
  214. }
  215. /*
  216. * Class: org_rocksdb_BackupEngineOptions
  217. * Method: setRestoreRateLimit
  218. * Signature: (JJ)V
  219. */
  220. void Java_org_rocksdb_BackupEngineOptions_setRestoreRateLimit(
  221. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle,
  222. jlong jrestore_rate_limit) {
  223. auto* bopt =
  224. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  225. bopt->restore_rate_limit = jrestore_rate_limit;
  226. }
  227. /*
  228. * Class: org_rocksdb_BackupEngineOptions
  229. * Method: restoreRateLimit
  230. * Signature: (J)J
  231. */
  232. jlong Java_org_rocksdb_BackupEngineOptions_restoreRateLimit(JNIEnv* /*env*/,
  233. jclass /*jcls*/,
  234. jlong jhandle) {
  235. auto* bopt =
  236. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  237. return bopt->restore_rate_limit;
  238. }
  239. /*
  240. * Class: org_rocksdb_BackupEngineOptions
  241. * Method: setRestoreRateLimiter
  242. * Signature: (JJ)V
  243. */
  244. void Java_org_rocksdb_BackupEngineOptions_setRestoreRateLimiter(
  245. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle,
  246. jlong jrate_limiter_handle) {
  247. auto* bopt =
  248. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  249. auto* sptr_rate_limiter =
  250. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(
  251. jrate_limiter_handle);
  252. bopt->restore_rate_limiter = *sptr_rate_limiter;
  253. }
  254. /*
  255. * Class: org_rocksdb_BackupEngineOptions
  256. * Method: setShareFilesWithChecksum
  257. * Signature: (JZ)V
  258. */
  259. void Java_org_rocksdb_BackupEngineOptions_setShareFilesWithChecksum(
  260. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle, jboolean flag) {
  261. auto* bopt =
  262. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  263. bopt->share_files_with_checksum = flag;
  264. }
  265. /*
  266. * Class: org_rocksdb_BackupEngineOptions
  267. * Method: shareFilesWithChecksum
  268. * Signature: (J)Z
  269. */
  270. jboolean Java_org_rocksdb_BackupEngineOptions_shareFilesWithChecksum(
  271. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle) {
  272. auto* bopt =
  273. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  274. return bopt->share_files_with_checksum;
  275. }
  276. /*
  277. * Class: org_rocksdb_BackupEngineOptions
  278. * Method: setMaxBackgroundOperations
  279. * Signature: (JI)V
  280. */
  281. void Java_org_rocksdb_BackupEngineOptions_setMaxBackgroundOperations(
  282. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle,
  283. jint max_background_operations) {
  284. auto* bopt =
  285. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  286. bopt->max_background_operations = static_cast<int>(max_background_operations);
  287. }
  288. /*
  289. * Class: org_rocksdb_BackupEngineOptions
  290. * Method: maxBackgroundOperations
  291. * Signature: (J)I
  292. */
  293. jint Java_org_rocksdb_BackupEngineOptions_maxBackgroundOperations(
  294. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle) {
  295. auto* bopt =
  296. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  297. return static_cast<jint>(bopt->max_background_operations);
  298. }
  299. /*
  300. * Class: org_rocksdb_BackupEngineOptions
  301. * Method: setCallbackTriggerIntervalSize
  302. * Signature: (JJ)V
  303. */
  304. void Java_org_rocksdb_BackupEngineOptions_setCallbackTriggerIntervalSize(
  305. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle,
  306. jlong jcallback_trigger_interval_size) {
  307. auto* bopt =
  308. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  309. bopt->callback_trigger_interval_size =
  310. static_cast<uint64_t>(jcallback_trigger_interval_size);
  311. }
  312. /*
  313. * Class: org_rocksdb_BackupEngineOptions
  314. * Method: callbackTriggerIntervalSize
  315. * Signature: (J)J
  316. */
  317. jlong Java_org_rocksdb_BackupEngineOptions_callbackTriggerIntervalSize(
  318. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle) {
  319. auto* bopt =
  320. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  321. return static_cast<jlong>(bopt->callback_trigger_interval_size);
  322. }
  323. /*
  324. * Class: org_rocksdb_BackupEngineOptions
  325. * Method: disposeInternal
  326. * Signature: (J)V
  327. */
  328. void Java_org_rocksdb_BackupEngineOptions_disposeInternalJni(JNIEnv* /*env*/,
  329. jclass /*jcls*/,
  330. jlong jhandle) {
  331. auto* bopt =
  332. reinterpret_cast<ROCKSDB_NAMESPACE::BackupEngineOptions*>(jhandle);
  333. assert(bopt != nullptr);
  334. delete bopt;
  335. }