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(JNIEnv
* /*env*/,
37 auto *env_opt
= new rocksdb::EnvOptions();
38 return reinterpret_cast<jlong
>(env_opt
);
42 * Class: org_rocksdb_EnvOptions
43 * Method: disposeInternal
46 void Java_org_rocksdb_EnvOptions_disposeInternal(JNIEnv
* /*env*/,
49 auto *eo
= reinterpret_cast<rocksdb::EnvOptions
*>(jhandle
);
50 assert(eo
!= nullptr);
55 * Class: org_rocksdb_EnvOptions
56 * Method: setUseDirectReads
59 void Java_org_rocksdb_EnvOptions_setUseDirectReads(JNIEnv
* /*env*/,
62 jboolean use_direct_reads
) {
63 ENV_OPTIONS_SET_BOOL(jhandle
, use_direct_reads
);
67 * Class: org_rocksdb_EnvOptions
68 * Method: useDirectReads
71 jboolean
Java_org_rocksdb_EnvOptions_useDirectReads(JNIEnv
* /*env*/,
74 return ENV_OPTIONS_GET(jhandle
, use_direct_reads
);
78 * Class: org_rocksdb_EnvOptions
79 * Method: setUseDirectWrites
82 void Java_org_rocksdb_EnvOptions_setUseDirectWrites(
83 JNIEnv
* /*env*/, jobject
/*jobj*/, jlong jhandle
,
84 jboolean use_direct_writes
) {
85 ENV_OPTIONS_SET_BOOL(jhandle
, use_direct_writes
);
89 * Class: org_rocksdb_EnvOptions
90 * Method: useDirectWrites
93 jboolean
Java_org_rocksdb_EnvOptions_useDirectWrites(JNIEnv
* /*env*/,
96 return ENV_OPTIONS_GET(jhandle
, use_direct_writes
);
100 * Class: org_rocksdb_EnvOptions
101 * Method: setUseMmapReads
104 void Java_org_rocksdb_EnvOptions_setUseMmapReads(JNIEnv
* /*env*/,
107 jboolean use_mmap_reads
) {
108 ENV_OPTIONS_SET_BOOL(jhandle
, use_mmap_reads
);
112 * Class: org_rocksdb_EnvOptions
113 * Method: useMmapReads
116 jboolean
Java_org_rocksdb_EnvOptions_useMmapReads(JNIEnv
* /*env*/,
119 return ENV_OPTIONS_GET(jhandle
, use_mmap_reads
);
123 * Class: org_rocksdb_EnvOptions
124 * Method: setUseMmapWrites
127 void Java_org_rocksdb_EnvOptions_setUseMmapWrites(JNIEnv
* /*env*/,
130 jboolean use_mmap_writes
) {
131 ENV_OPTIONS_SET_BOOL(jhandle
, use_mmap_writes
);
135 * Class: org_rocksdb_EnvOptions
136 * Method: useMmapWrites
139 jboolean
Java_org_rocksdb_EnvOptions_useMmapWrites(JNIEnv
* /*env*/,
142 return ENV_OPTIONS_GET(jhandle
, use_mmap_writes
);
146 * Class: org_rocksdb_EnvOptions
147 * Method: setAllowFallocate
150 void Java_org_rocksdb_EnvOptions_setAllowFallocate(JNIEnv
* /*env*/,
153 jboolean allow_fallocate
) {
154 ENV_OPTIONS_SET_BOOL(jhandle
, allow_fallocate
);
158 * Class: org_rocksdb_EnvOptions
159 * Method: allowFallocate
162 jboolean
Java_org_rocksdb_EnvOptions_allowFallocate(JNIEnv
* /*env*/,
165 return ENV_OPTIONS_GET(jhandle
, allow_fallocate
);
169 * Class: org_rocksdb_EnvOptions
170 * Method: setSetFdCloexec
173 void Java_org_rocksdb_EnvOptions_setSetFdCloexec(JNIEnv
* /*env*/,
176 jboolean set_fd_cloexec
) {
177 ENV_OPTIONS_SET_BOOL(jhandle
, set_fd_cloexec
);
181 * Class: org_rocksdb_EnvOptions
182 * Method: setFdCloexec
185 jboolean
Java_org_rocksdb_EnvOptions_setFdCloexec(JNIEnv
* /*env*/,
188 return ENV_OPTIONS_GET(jhandle
, set_fd_cloexec
);
192 * Class: org_rocksdb_EnvOptions
193 * Method: setBytesPerSync
196 void Java_org_rocksdb_EnvOptions_setBytesPerSync(JNIEnv
* /*env*/,
199 jlong bytes_per_sync
) {
200 ENV_OPTIONS_SET_UINT64_T(jhandle
, bytes_per_sync
);
204 * Class: org_rocksdb_EnvOptions
205 * Method: bytesPerSync
208 jlong
Java_org_rocksdb_EnvOptions_bytesPerSync(JNIEnv
* /*env*/,
211 return ENV_OPTIONS_GET(jhandle
, bytes_per_sync
);
215 * Class: org_rocksdb_EnvOptions
216 * Method: setFallocateWithKeepSize
219 void Java_org_rocksdb_EnvOptions_setFallocateWithKeepSize(
220 JNIEnv
* /*env*/, jobject
/*jobj*/, jlong jhandle
,
221 jboolean fallocate_with_keep_size
) {
222 ENV_OPTIONS_SET_BOOL(jhandle
, fallocate_with_keep_size
);
226 * Class: org_rocksdb_EnvOptions
227 * Method: fallocateWithKeepSize
230 jboolean
Java_org_rocksdb_EnvOptions_fallocateWithKeepSize(JNIEnv
* /*env*/,
233 return ENV_OPTIONS_GET(jhandle
, fallocate_with_keep_size
);
237 * Class: org_rocksdb_EnvOptions
238 * Method: setCompactionReadaheadSize
241 void Java_org_rocksdb_EnvOptions_setCompactionReadaheadSize(
242 JNIEnv
* /*env*/, jobject
/*jobj*/, jlong jhandle
,
243 jlong compaction_readahead_size
) {
244 ENV_OPTIONS_SET_SIZE_T(jhandle
, compaction_readahead_size
);
248 * Class: org_rocksdb_EnvOptions
249 * Method: compactionReadaheadSize
252 jlong
Java_org_rocksdb_EnvOptions_compactionReadaheadSize(JNIEnv
* /*env*/,
255 return ENV_OPTIONS_GET(jhandle
, compaction_readahead_size
);
259 * Class: org_rocksdb_EnvOptions
260 * Method: setRandomAccessMaxBufferSize
263 void Java_org_rocksdb_EnvOptions_setRandomAccessMaxBufferSize(
264 JNIEnv
* /*env*/, jobject
/*jobj*/, jlong jhandle
,
265 jlong random_access_max_buffer_size
) {
266 ENV_OPTIONS_SET_SIZE_T(jhandle
, random_access_max_buffer_size
);
270 * Class: org_rocksdb_EnvOptions
271 * Method: randomAccessMaxBufferSize
274 jlong
Java_org_rocksdb_EnvOptions_randomAccessMaxBufferSize(JNIEnv
* /*env*/,
277 return ENV_OPTIONS_GET(jhandle
, random_access_max_buffer_size
);
281 * Class: org_rocksdb_EnvOptions
282 * Method: setWritableFileMaxBufferSize
285 void Java_org_rocksdb_EnvOptions_setWritableFileMaxBufferSize(
286 JNIEnv
* /*env*/, jobject
/*jobj*/, jlong jhandle
,
287 jlong writable_file_max_buffer_size
) {
288 ENV_OPTIONS_SET_SIZE_T(jhandle
, writable_file_max_buffer_size
);
292 * Class: org_rocksdb_EnvOptions
293 * Method: writableFileMaxBufferSize
296 jlong
Java_org_rocksdb_EnvOptions_writableFileMaxBufferSize(JNIEnv
* /*env*/,
299 return ENV_OPTIONS_GET(jhandle
, writable_file_max_buffer_size
);
303 * Class: org_rocksdb_EnvOptions
304 * Method: setRateLimiter
307 void Java_org_rocksdb_EnvOptions_setRateLimiter(JNIEnv
* /*env*/,
308 jobject
/*jobj*/, jlong jhandle
,
310 auto *sptr_rate_limiter
=
311 reinterpret_cast<std::shared_ptr
<rocksdb::RateLimiter
> *>(rl_handle
);
312 auto *env_opt
= reinterpret_cast<rocksdb::EnvOptions
*>(jhandle
);
313 env_opt
->rate_limiter
= sptr_rate_limiter
->get();