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