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).
6 // This file implements the "bridge" between Java and C++ and enables
7 // calling C++ rocksdb::EnvOptions methods
12 #include "include/org_rocksdb_EnvOptions.h"
13 #include "rocksdb/env.h"
15 #define ENV_OPTIONS_SET_BOOL(_jhandle, _opt) \
16 reinterpret_cast<rocksdb::EnvOptions *>(_jhandle)->_opt = \
17 static_cast<bool>(_opt)
19 #define ENV_OPTIONS_SET_SIZE_T(_jhandle, _opt) \
20 reinterpret_cast<rocksdb::EnvOptions *>(_jhandle)->_opt = \
21 static_cast<size_t>(_opt)
23 #define ENV_OPTIONS_SET_UINT64_T(_jhandle, _opt) \
24 reinterpret_cast<rocksdb::EnvOptions *>(_jhandle)->_opt = \
25 static_cast<uint64_t>(_opt)
27 #define ENV_OPTIONS_GET(_jhandle, _opt) \
28 reinterpret_cast<rocksdb::EnvOptions *>(_jhandle)->_opt
31 * Class: org_rocksdb_EnvOptions
32 * Method: newEnvOptions
35 jlong
Java_org_rocksdb_EnvOptions_newEnvOptions__(
37 auto *env_opt
= new rocksdb::EnvOptions();
38 return reinterpret_cast<jlong
>(env_opt
);
42 * Class: org_rocksdb_EnvOptions
43 * Method: newEnvOptions
46 jlong
Java_org_rocksdb_EnvOptions_newEnvOptions__J(
47 JNIEnv
*, jclass
, jlong jdboptions_handle
) {
49 reinterpret_cast<rocksdb::DBOptions
*>(jdboptions_handle
);
50 auto* env_opt
= new rocksdb::EnvOptions(*db_options
);
51 return reinterpret_cast<jlong
>(env_opt
);
55 * Class: org_rocksdb_EnvOptions
56 * Method: disposeInternal
59 void Java_org_rocksdb_EnvOptions_disposeInternal(
60 JNIEnv
*, jobject
, jlong jhandle
) {
61 auto *eo
= reinterpret_cast<rocksdb::EnvOptions
*>(jhandle
);
62 assert(eo
!= nullptr);
67 * Class: org_rocksdb_EnvOptions
68 * Method: setUseMmapReads
71 void Java_org_rocksdb_EnvOptions_setUseMmapReads(
72 JNIEnv
*, jobject
, jlong jhandle
, jboolean use_mmap_reads
) {
73 ENV_OPTIONS_SET_BOOL(jhandle
, use_mmap_reads
);
77 * Class: org_rocksdb_EnvOptions
78 * Method: useMmapReads
81 jboolean
Java_org_rocksdb_EnvOptions_useMmapReads(
82 JNIEnv
*, jobject
, jlong jhandle
) {
83 return ENV_OPTIONS_GET(jhandle
, use_mmap_reads
);
87 * Class: org_rocksdb_EnvOptions
88 * Method: setUseMmapWrites
91 void Java_org_rocksdb_EnvOptions_setUseMmapWrites(
92 JNIEnv
*, jobject
, jlong jhandle
, jboolean use_mmap_writes
) {
93 ENV_OPTIONS_SET_BOOL(jhandle
, use_mmap_writes
);
97 * Class: org_rocksdb_EnvOptions
98 * Method: useMmapWrites
101 jboolean
Java_org_rocksdb_EnvOptions_useMmapWrites(
102 JNIEnv
*, jobject
, jlong jhandle
) {
103 return ENV_OPTIONS_GET(jhandle
, use_mmap_writes
);
107 * Class: org_rocksdb_EnvOptions
108 * Method: setUseDirectReads
111 void Java_org_rocksdb_EnvOptions_setUseDirectReads(
112 JNIEnv
*, jobject
, jlong jhandle
, jboolean use_direct_reads
) {
113 ENV_OPTIONS_SET_BOOL(jhandle
, use_direct_reads
);
117 * Class: org_rocksdb_EnvOptions
118 * Method: useDirectReads
121 jboolean
Java_org_rocksdb_EnvOptions_useDirectReads(
122 JNIEnv
*, jobject
, jlong jhandle
) {
123 return ENV_OPTIONS_GET(jhandle
, use_direct_reads
);
127 * Class: org_rocksdb_EnvOptions
128 * Method: setUseDirectWrites
131 void Java_org_rocksdb_EnvOptions_setUseDirectWrites(
132 JNIEnv
*, jobject
, jlong jhandle
, jboolean use_direct_writes
) {
133 ENV_OPTIONS_SET_BOOL(jhandle
, use_direct_writes
);
137 * Class: org_rocksdb_EnvOptions
138 * Method: useDirectWrites
141 jboolean
Java_org_rocksdb_EnvOptions_useDirectWrites(
142 JNIEnv
*, jobject
, jlong jhandle
) {
143 return ENV_OPTIONS_GET(jhandle
, use_direct_writes
);
147 * Class: org_rocksdb_EnvOptions
148 * Method: setAllowFallocate
151 void Java_org_rocksdb_EnvOptions_setAllowFallocate(
152 JNIEnv
*, jobject
, jlong jhandle
, jboolean allow_fallocate
) {
153 ENV_OPTIONS_SET_BOOL(jhandle
, allow_fallocate
);
157 * Class: org_rocksdb_EnvOptions
158 * Method: allowFallocate
161 jboolean
Java_org_rocksdb_EnvOptions_allowFallocate(
162 JNIEnv
*, jobject
, jlong jhandle
) {
163 return ENV_OPTIONS_GET(jhandle
, allow_fallocate
);
167 * Class: org_rocksdb_EnvOptions
168 * Method: setSetFdCloexec
171 void Java_org_rocksdb_EnvOptions_setSetFdCloexec(
172 JNIEnv
*, jobject
, jlong jhandle
, jboolean set_fd_cloexec
) {
173 ENV_OPTIONS_SET_BOOL(jhandle
, set_fd_cloexec
);
177 * Class: org_rocksdb_EnvOptions
178 * Method: setFdCloexec
181 jboolean
Java_org_rocksdb_EnvOptions_setFdCloexec(
182 JNIEnv
*, jobject
, jlong jhandle
) {
183 return ENV_OPTIONS_GET(jhandle
, set_fd_cloexec
);
187 * Class: org_rocksdb_EnvOptions
188 * Method: setBytesPerSync
191 void Java_org_rocksdb_EnvOptions_setBytesPerSync(
192 JNIEnv
*, jobject
, jlong jhandle
, jlong bytes_per_sync
) {
193 ENV_OPTIONS_SET_UINT64_T(jhandle
, bytes_per_sync
);
197 * Class: org_rocksdb_EnvOptions
198 * Method: bytesPerSync
201 jlong
Java_org_rocksdb_EnvOptions_bytesPerSync(
202 JNIEnv
*, jobject
, jlong jhandle
) {
203 return ENV_OPTIONS_GET(jhandle
, bytes_per_sync
);
207 * Class: org_rocksdb_EnvOptions
208 * Method: setFallocateWithKeepSize
211 void Java_org_rocksdb_EnvOptions_setFallocateWithKeepSize(
212 JNIEnv
*, jobject
, jlong jhandle
, jboolean fallocate_with_keep_size
) {
213 ENV_OPTIONS_SET_BOOL(jhandle
, fallocate_with_keep_size
);
217 * Class: org_rocksdb_EnvOptions
218 * Method: fallocateWithKeepSize
221 jboolean
Java_org_rocksdb_EnvOptions_fallocateWithKeepSize(
222 JNIEnv
*, jobject
, jlong jhandle
) {
223 return ENV_OPTIONS_GET(jhandle
, fallocate_with_keep_size
);
227 * Class: org_rocksdb_EnvOptions
228 * Method: setCompactionReadaheadSize
231 void Java_org_rocksdb_EnvOptions_setCompactionReadaheadSize(
232 JNIEnv
*, jobject
, jlong jhandle
, jlong compaction_readahead_size
) {
233 ENV_OPTIONS_SET_SIZE_T(jhandle
, compaction_readahead_size
);
237 * Class: org_rocksdb_EnvOptions
238 * Method: compactionReadaheadSize
241 jlong
Java_org_rocksdb_EnvOptions_compactionReadaheadSize(
242 JNIEnv
*, jobject
, jlong jhandle
) {
243 return ENV_OPTIONS_GET(jhandle
, compaction_readahead_size
);
247 * Class: org_rocksdb_EnvOptions
248 * Method: setRandomAccessMaxBufferSize
251 void Java_org_rocksdb_EnvOptions_setRandomAccessMaxBufferSize(
252 JNIEnv
*, jobject
, jlong jhandle
, jlong random_access_max_buffer_size
) {
253 ENV_OPTIONS_SET_SIZE_T(jhandle
, random_access_max_buffer_size
);
257 * Class: org_rocksdb_EnvOptions
258 * Method: randomAccessMaxBufferSize
261 jlong
Java_org_rocksdb_EnvOptions_randomAccessMaxBufferSize(
262 JNIEnv
*, jobject
, jlong jhandle
) {
263 return ENV_OPTIONS_GET(jhandle
, random_access_max_buffer_size
);
267 * Class: org_rocksdb_EnvOptions
268 * Method: setWritableFileMaxBufferSize
271 void Java_org_rocksdb_EnvOptions_setWritableFileMaxBufferSize(
272 JNIEnv
*, jobject
, jlong jhandle
, jlong writable_file_max_buffer_size
) {
273 ENV_OPTIONS_SET_SIZE_T(jhandle
, writable_file_max_buffer_size
);
277 * Class: org_rocksdb_EnvOptions
278 * Method: writableFileMaxBufferSize
281 jlong
Java_org_rocksdb_EnvOptions_writableFileMaxBufferSize(
282 JNIEnv
*, jobject
, jlong jhandle
) {
283 return ENV_OPTIONS_GET(jhandle
, writable_file_max_buffer_size
);
287 * Class: org_rocksdb_EnvOptions
288 * Method: setRateLimiter
291 void Java_org_rocksdb_EnvOptions_setRateLimiter(
292 JNIEnv
*, jobject
, jlong jhandle
, jlong rl_handle
) {
293 auto *sptr_rate_limiter
=
294 reinterpret_cast<std::shared_ptr
<rocksdb::RateLimiter
> *>(rl_handle
);
295 auto *env_opt
= reinterpret_cast<rocksdb::EnvOptions
*>(jhandle
);
296 env_opt
->rate_limiter
= sptr_rate_limiter
->get();