merge_operator.cc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
  2. // Copyright (c) 2014, Vlad Balan (vlad.gm@gmail.com). All rights reserved.
  3. // This source code is licensed under both the GPLv2 (found in the
  4. // COPYING file in the root directory) and Apache 2.0 License
  5. // (found in the LICENSE.Apache file in the root directory).
  6. //
  7. // This file implements the "bridge" between Java and C++
  8. // for ROCKSDB_NAMESPACE::MergeOperator.
  9. #include <jni.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <memory>
  13. #include <string>
  14. #include "include/org_rocksdb_StringAppendOperator.h"
  15. #include "include/org_rocksdb_UInt64AddOperator.h"
  16. #include "rocksdb/db.h"
  17. #include "rocksdb/memtablerep.h"
  18. #include "rocksdb/merge_operator.h"
  19. #include "rocksdb/options.h"
  20. #include "rocksdb/slice_transform.h"
  21. #include "rocksdb/statistics.h"
  22. #include "rocksdb/table.h"
  23. #include "rocksjni/portal.h"
  24. #include "utilities/merge_operators.h"
  25. /*
  26. * Class: org_rocksdb_StringAppendOperator
  27. * Method: newSharedStringAppendOperator
  28. * Signature: (C)J
  29. */
  30. jlong Java_org_rocksdb_StringAppendOperator_newSharedStringAppendOperator(
  31. JNIEnv* /*env*/, jclass /*jclazz*/, jchar jdelim) {
  32. auto* sptr_string_append_op =
  33. new std::shared_ptr<ROCKSDB_NAMESPACE::MergeOperator>(
  34. ROCKSDB_NAMESPACE::MergeOperators::CreateStringAppendOperator(
  35. (char)jdelim));
  36. return reinterpret_cast<jlong>(sptr_string_append_op);
  37. }
  38. /*
  39. * Class: org_rocksdb_StringAppendOperator
  40. * Method: disposeInternal
  41. * Signature: (J)V
  42. */
  43. void Java_org_rocksdb_StringAppendOperator_disposeInternal(JNIEnv* /*env*/,
  44. jobject /*jobj*/,
  45. jlong jhandle) {
  46. auto* sptr_string_append_op =
  47. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::MergeOperator>*>(
  48. jhandle);
  49. delete sptr_string_append_op; // delete std::shared_ptr
  50. }
  51. /*
  52. * Class: org_rocksdb_UInt64AddOperator
  53. * Method: newSharedUInt64AddOperator
  54. * Signature: ()J
  55. */
  56. jlong Java_org_rocksdb_UInt64AddOperator_newSharedUInt64AddOperator(
  57. JNIEnv* /*env*/, jclass /*jclazz*/) {
  58. auto* sptr_uint64_add_op =
  59. new std::shared_ptr<ROCKSDB_NAMESPACE::MergeOperator>(
  60. ROCKSDB_NAMESPACE::MergeOperators::CreateUInt64AddOperator());
  61. return reinterpret_cast<jlong>(sptr_uint64_add_op);
  62. }
  63. /*
  64. * Class: org_rocksdb_UInt64AddOperator
  65. * Method: disposeInternal
  66. * Signature: (J)V
  67. */
  68. void Java_org_rocksdb_UInt64AddOperator_disposeInternal(JNIEnv* /*env*/,
  69. jobject /*jobj*/,
  70. jlong jhandle) {
  71. auto* sptr_uint64_add_op =
  72. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::MergeOperator>*>(
  73. jhandle);
  74. delete sptr_uint64_add_op; // delete std::shared_ptr
  75. }