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 #include <jni.h>
7
8 #include "include/org_rocksdb_WriteBufferManager.h"
9
10 #include "rocksdb/cache.h"
11 #include "rocksdb/write_buffer_manager.h"
12
13 /*
14 * Class: org_rocksdb_WriteBufferManager
15 * Method: newWriteBufferManager
16 * Signature: (JJ)J
17 */
Java_org_rocksdb_WriteBufferManager_newWriteBufferManager(JNIEnv *,jclass,jlong jbuffer_size,jlong jcache_handle)18 jlong Java_org_rocksdb_WriteBufferManager_newWriteBufferManager(
19 JNIEnv* /*env*/, jclass /*jclazz*/, jlong jbuffer_size, jlong jcache_handle) {
20 auto* cache_ptr =
21 reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Cache>*>(
22 jcache_handle);
23 auto* write_buffer_manager =
24 new std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>(
25 std::make_shared<ROCKSDB_NAMESPACE::WriteBufferManager>(jbuffer_size,
26 *cache_ptr));
27 return reinterpret_cast<jlong>(write_buffer_manager);
28 }
29
30 /*
31 * Class: org_rocksdb_WriteBufferManager
32 * Method: disposeInternal
33 * Signature: (J)V
34 */
Java_org_rocksdb_WriteBufferManager_disposeInternal(JNIEnv *,jobject,jlong jhandle)35 void Java_org_rocksdb_WriteBufferManager_disposeInternal(
36 JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) {
37 auto* write_buffer_manager =
38 reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>*>(
39 jhandle);
40 assert(write_buffer_manager != nullptr);
41 delete write_buffer_manager;
42 }
43