cassandra_value_operator.cc 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright (c) 2017-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 <jni.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <memory>
  9. #include <string>
  10. #include "include/org_rocksdb_CassandraValueMergeOperator.h"
  11. #include "rocksdb/db.h"
  12. #include "rocksdb/memtablerep.h"
  13. #include "rocksdb/merge_operator.h"
  14. #include "rocksdb/options.h"
  15. #include "rocksdb/slice_transform.h"
  16. #include "rocksdb/statistics.h"
  17. #include "rocksdb/table.h"
  18. #include "rocksjni/cplusplus_to_java_convert.h"
  19. #include "rocksjni/portal.h"
  20. #include "utilities/cassandra/merge_operator.h"
  21. /*
  22. * Class: org_rocksdb_CassandraValueMergeOperator
  23. * Method: newSharedCassandraValueMergeOperator
  24. * Signature: (II)J
  25. */
  26. jlong Java_org_rocksdb_CassandraValueMergeOperator_newSharedCassandraValueMergeOperator(
  27. JNIEnv* /*env*/, jclass /*jclazz*/, jint gcGracePeriodInSeconds,
  28. jint operands_limit) {
  29. auto* op = new std::shared_ptr<ROCKSDB_NAMESPACE::MergeOperator>(
  30. new ROCKSDB_NAMESPACE::cassandra::CassandraValueMergeOperator(
  31. gcGracePeriodInSeconds, operands_limit));
  32. return GET_CPLUSPLUS_POINTER(op);
  33. }
  34. /*
  35. * Class: org_rocksdb_CassandraValueMergeOperator
  36. * Method: disposeInternal
  37. * Signature: (J)V
  38. */
  39. void Java_org_rocksdb_CassandraValueMergeOperator_disposeInternalJni(
  40. JNIEnv* /*env*/, jclass /*jcls*/, jlong jhandle) {
  41. auto* op =
  42. reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::MergeOperator>*>(
  43. jhandle);
  44. delete op;
  45. }