backupablejni.cc 12 KB

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