env_options.cc 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  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::EnvOptions methods
  8. // from Java side.
  9. #include <jni.h>
  10. #include "include/org_rocksdb_EnvOptions.h"
  11. #include "rocksdb/env.h"
  12. #include "rocksjni/cplusplus_to_java_convert.h"
  13. #define ENV_OPTIONS_SET_BOOL(_jhandle, _opt) \
  14. reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(_jhandle)->_opt = \
  15. static_cast<bool>(_opt)
  16. #define ENV_OPTIONS_SET_SIZE_T(_jhandle, _opt) \
  17. reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(_jhandle)->_opt = \
  18. static_cast<size_t>(_opt)
  19. #define ENV_OPTIONS_SET_UINT64_T(_jhandle, _opt) \
  20. reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(_jhandle)->_opt = \
  21. static_cast<uint64_t>(_opt)
  22. #define ENV_OPTIONS_GET(_jhandle, _opt) \
  23. reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(_jhandle)->_opt
  24. /*
  25. * Class: org_rocksdb_EnvOptions
  26. * Method: newEnvOptions
  27. * Signature: ()J
  28. */
  29. jlong Java_org_rocksdb_EnvOptions_newEnvOptions__(JNIEnv *, jclass) {
  30. auto *env_opt = new ROCKSDB_NAMESPACE::EnvOptions();
  31. return GET_CPLUSPLUS_POINTER(env_opt);
  32. }
  33. /*
  34. * Class: org_rocksdb_EnvOptions
  35. * Method: newEnvOptions
  36. * Signature: (J)J
  37. */
  38. jlong Java_org_rocksdb_EnvOptions_newEnvOptions__J(JNIEnv *, jclass,
  39. jlong jdboptions_handle) {
  40. auto *db_options =
  41. reinterpret_cast<ROCKSDB_NAMESPACE::DBOptions *>(jdboptions_handle);
  42. auto *env_opt = new ROCKSDB_NAMESPACE::EnvOptions(*db_options);
  43. return GET_CPLUSPLUS_POINTER(env_opt);
  44. }
  45. /*
  46. * Class: org_rocksdb_EnvOptions
  47. * Method: disposeInternal
  48. * Signature: (J)V
  49. */
  50. void Java_org_rocksdb_EnvOptions_disposeInternalJni(JNIEnv *, jclass,
  51. jlong jhandle) {
  52. auto *eo = reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(jhandle);
  53. assert(eo != nullptr);
  54. delete eo;
  55. }
  56. /*
  57. * Class: org_rocksdb_EnvOptions
  58. * Method: setUseMmapReads
  59. * Signature: (JZ)V
  60. */
  61. void Java_org_rocksdb_EnvOptions_setUseMmapReads(JNIEnv *, jclass,
  62. jlong jhandle,
  63. jboolean use_mmap_reads) {
  64. ENV_OPTIONS_SET_BOOL(jhandle, use_mmap_reads);
  65. }
  66. /*
  67. * Class: org_rocksdb_EnvOptions
  68. * Method: useMmapReads
  69. * Signature: (J)Z
  70. */
  71. jboolean Java_org_rocksdb_EnvOptions_useMmapReads(JNIEnv *, jclass,
  72. jlong jhandle) {
  73. return ENV_OPTIONS_GET(jhandle, use_mmap_reads);
  74. }
  75. /*
  76. * Class: org_rocksdb_EnvOptions
  77. * Method: setUseMmapWrites
  78. * Signature: (JZ)V
  79. */
  80. void Java_org_rocksdb_EnvOptions_setUseMmapWrites(JNIEnv *, jclass,
  81. jlong jhandle,
  82. jboolean use_mmap_writes) {
  83. ENV_OPTIONS_SET_BOOL(jhandle, use_mmap_writes);
  84. }
  85. /*
  86. * Class: org_rocksdb_EnvOptions
  87. * Method: useMmapWrites
  88. * Signature: (J)Z
  89. */
  90. jboolean Java_org_rocksdb_EnvOptions_useMmapWrites(JNIEnv *, jclass,
  91. jlong jhandle) {
  92. return ENV_OPTIONS_GET(jhandle, use_mmap_writes);
  93. }
  94. /*
  95. * Class: org_rocksdb_EnvOptions
  96. * Method: setUseDirectReads
  97. * Signature: (JZ)V
  98. */
  99. void Java_org_rocksdb_EnvOptions_setUseDirectReads(JNIEnv *, jclass,
  100. jlong jhandle,
  101. jboolean use_direct_reads) {
  102. ENV_OPTIONS_SET_BOOL(jhandle, use_direct_reads);
  103. }
  104. /*
  105. * Class: org_rocksdb_EnvOptions
  106. * Method: useDirectReads
  107. * Signature: (J)Z
  108. */
  109. jboolean Java_org_rocksdb_EnvOptions_useDirectReads(JNIEnv *, jclass,
  110. jlong jhandle) {
  111. return ENV_OPTIONS_GET(jhandle, use_direct_reads);
  112. }
  113. /*
  114. * Class: org_rocksdb_EnvOptions
  115. * Method: setUseDirectWrites
  116. * Signature: (JZ)V
  117. */
  118. void Java_org_rocksdb_EnvOptions_setUseDirectWrites(
  119. JNIEnv *, jclass, jlong jhandle, jboolean use_direct_writes) {
  120. ENV_OPTIONS_SET_BOOL(jhandle, use_direct_writes);
  121. }
  122. /*
  123. * Class: org_rocksdb_EnvOptions
  124. * Method: useDirectWrites
  125. * Signature: (J)Z
  126. */
  127. jboolean Java_org_rocksdb_EnvOptions_useDirectWrites(JNIEnv *, jclass,
  128. jlong jhandle) {
  129. return ENV_OPTIONS_GET(jhandle, use_direct_writes);
  130. }
  131. /*
  132. * Class: org_rocksdb_EnvOptions
  133. * Method: setAllowFallocate
  134. * Signature: (JZ)V
  135. */
  136. void Java_org_rocksdb_EnvOptions_setAllowFallocate(JNIEnv *, jclass,
  137. jlong jhandle,
  138. jboolean allow_fallocate) {
  139. ENV_OPTIONS_SET_BOOL(jhandle, allow_fallocate);
  140. }
  141. /*
  142. * Class: org_rocksdb_EnvOptions
  143. * Method: allowFallocate
  144. * Signature: (J)Z
  145. */
  146. jboolean Java_org_rocksdb_EnvOptions_allowFallocate(JNIEnv *, jclass,
  147. jlong jhandle) {
  148. return ENV_OPTIONS_GET(jhandle, allow_fallocate);
  149. }
  150. /*
  151. * Class: org_rocksdb_EnvOptions
  152. * Method: setSetFdCloexec
  153. * Signature: (JZ)V
  154. */
  155. void Java_org_rocksdb_EnvOptions_setSetFdCloexec(JNIEnv *, jclass,
  156. jlong jhandle,
  157. jboolean set_fd_cloexec) {
  158. ENV_OPTIONS_SET_BOOL(jhandle, set_fd_cloexec);
  159. }
  160. /*
  161. * Class: org_rocksdb_EnvOptions
  162. * Method: setFdCloexec
  163. * Signature: (J)Z
  164. */
  165. jboolean Java_org_rocksdb_EnvOptions_setFdCloexec(JNIEnv *, jclass,
  166. jlong jhandle) {
  167. return ENV_OPTIONS_GET(jhandle, set_fd_cloexec);
  168. }
  169. /*
  170. * Class: org_rocksdb_EnvOptions
  171. * Method: setBytesPerSync
  172. * Signature: (JJ)V
  173. */
  174. void Java_org_rocksdb_EnvOptions_setBytesPerSync(JNIEnv *, jclass,
  175. jlong jhandle,
  176. jlong bytes_per_sync) {
  177. ENV_OPTIONS_SET_UINT64_T(jhandle, bytes_per_sync);
  178. }
  179. /*
  180. * Class: org_rocksdb_EnvOptions
  181. * Method: bytesPerSync
  182. * Signature: (J)J
  183. */
  184. jlong Java_org_rocksdb_EnvOptions_bytesPerSync(JNIEnv *, jclass,
  185. jlong jhandle) {
  186. return ENV_OPTIONS_GET(jhandle, bytes_per_sync);
  187. }
  188. /*
  189. * Class: org_rocksdb_EnvOptions
  190. * Method: setFallocateWithKeepSize
  191. * Signature: (JZ)V
  192. */
  193. void Java_org_rocksdb_EnvOptions_setFallocateWithKeepSize(
  194. JNIEnv *, jclass, jlong jhandle, jboolean fallocate_with_keep_size) {
  195. ENV_OPTIONS_SET_BOOL(jhandle, fallocate_with_keep_size);
  196. }
  197. /*
  198. * Class: org_rocksdb_EnvOptions
  199. * Method: fallocateWithKeepSize
  200. * Signature: (J)Z
  201. */
  202. jboolean Java_org_rocksdb_EnvOptions_fallocateWithKeepSize(JNIEnv *, jclass,
  203. jlong jhandle) {
  204. return ENV_OPTIONS_GET(jhandle, fallocate_with_keep_size);
  205. }
  206. /*
  207. * Class: org_rocksdb_EnvOptions
  208. * Method: setCompactionReadaheadSize
  209. * Signature: (JJ)V
  210. */
  211. void Java_org_rocksdb_EnvOptions_setCompactionReadaheadSize(
  212. JNIEnv *, jclass, jlong jhandle, jlong compaction_readahead_size) {
  213. ENV_OPTIONS_SET_SIZE_T(jhandle, compaction_readahead_size);
  214. }
  215. /*
  216. * Class: org_rocksdb_EnvOptions
  217. * Method: compactionReadaheadSize
  218. * Signature: (J)J
  219. */
  220. jlong Java_org_rocksdb_EnvOptions_compactionReadaheadSize(JNIEnv *, jclass,
  221. jlong jhandle) {
  222. return ENV_OPTIONS_GET(jhandle, compaction_readahead_size);
  223. }
  224. /*
  225. * Class: org_rocksdb_EnvOptions
  226. * Method: setWritableFileMaxBufferSize
  227. * Signature: (JJ)V
  228. */
  229. void Java_org_rocksdb_EnvOptions_setWritableFileMaxBufferSize(
  230. JNIEnv *, jclass, jlong jhandle, jlong writable_file_max_buffer_size) {
  231. ENV_OPTIONS_SET_SIZE_T(jhandle, writable_file_max_buffer_size);
  232. }
  233. /*
  234. * Class: org_rocksdb_EnvOptions
  235. * Method: writableFileMaxBufferSize
  236. * Signature: (J)J
  237. */
  238. jlong Java_org_rocksdb_EnvOptions_writableFileMaxBufferSize(JNIEnv *, jclass,
  239. jlong jhandle) {
  240. return ENV_OPTIONS_GET(jhandle, writable_file_max_buffer_size);
  241. }
  242. /*
  243. * Class: org_rocksdb_EnvOptions
  244. * Method: setRateLimiter
  245. * Signature: (JJ)V
  246. */
  247. void Java_org_rocksdb_EnvOptions_setRateLimiter(JNIEnv *, jclass, jlong jhandle,
  248. jlong rl_handle) {
  249. auto *sptr_rate_limiter =
  250. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter> *>(
  251. rl_handle);
  252. auto *env_opt = reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(jhandle);
  253. env_opt->rate_limiter = sptr_rate_limiter->get();
  254. }