env_options.cc 8.2 KB

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