write_buffer_manager.cc 1.6 KB

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