config_options.cc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. // This file implements the "bridge" between Java and C++ and enables
  7. // calling C++ ROCKSDB_NAMESPACE::ConfigOptions methods
  8. // from Java side.
  9. #include <jni.h>
  10. #include "include/org_rocksdb_ConfigOptions.h"
  11. #include "rocksdb/convenience.h"
  12. #include "rocksjni/cplusplus_to_java_convert.h"
  13. #include "rocksjni/portal.h"
  14. /*
  15. * Class: org_rocksdb_ConfigOptions
  16. * Method: disposeInternal
  17. * Signature: (J)V
  18. */
  19. void Java_org_rocksdb_ConfigOptions_disposeInternalJni(JNIEnv *, jclass,
  20. jlong jhandle) {
  21. auto *co = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(jhandle);
  22. assert(co != nullptr);
  23. delete co;
  24. }
  25. /*
  26. * Class: org_rocksdb_ConfigOptions
  27. * Method: newConfigOptions
  28. * Signature: ()J
  29. */
  30. jlong Java_org_rocksdb_ConfigOptions_newConfigOptions(JNIEnv *, jclass) {
  31. auto *cfg_opt = new ROCKSDB_NAMESPACE::ConfigOptions();
  32. return GET_CPLUSPLUS_POINTER(cfg_opt);
  33. }
  34. /*
  35. * Class: org_rocksdb_ConfigOptions
  36. * Method: setEnv
  37. * Signature: (JJ;)V
  38. */
  39. void Java_org_rocksdb_ConfigOptions_setEnv(JNIEnv *, jclass, jlong handle,
  40. jlong rocksdb_env_handle) {
  41. auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle);
  42. auto *rocksdb_env =
  43. reinterpret_cast<ROCKSDB_NAMESPACE::Env *>(rocksdb_env_handle);
  44. cfg_opt->env = rocksdb_env;
  45. }
  46. /*
  47. * Class: org_rocksdb_ConfigOptions
  48. * Method: setDelimiter
  49. * Signature: (JLjava/lang/String;)V
  50. */
  51. void Java_org_rocksdb_ConfigOptions_setDelimiter(JNIEnv *env, jclass,
  52. jlong handle, jstring s) {
  53. auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle);
  54. const char *delim = env->GetStringUTFChars(s, nullptr);
  55. if (delim == nullptr) {
  56. // exception thrown: OutOfMemoryError
  57. return;
  58. }
  59. cfg_opt->delimiter = delim;
  60. env->ReleaseStringUTFChars(s, delim);
  61. }
  62. /*
  63. * Class: org_rocksdb_ConfigOptions
  64. * Method: setIgnoreUnknownOptions
  65. * Signature: (JZ)V
  66. */
  67. void Java_org_rocksdb_ConfigOptions_setIgnoreUnknownOptions(JNIEnv *, jclass,
  68. jlong handle,
  69. jboolean b) {
  70. auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle);
  71. cfg_opt->ignore_unknown_options = static_cast<bool>(b);
  72. }
  73. /*
  74. * Class: org_rocksdb_ConfigOptions
  75. * Method: setInputStringsEscaped
  76. * Signature: (JZ)V
  77. */
  78. void Java_org_rocksdb_ConfigOptions_setInputStringsEscaped(JNIEnv *, jclass,
  79. jlong handle,
  80. jboolean b) {
  81. auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle);
  82. cfg_opt->input_strings_escaped = static_cast<bool>(b);
  83. }
  84. /*
  85. * Class: org_rocksdb_ConfigOptions
  86. * Method: setSanityLevel
  87. * Signature: (JI)V
  88. */
  89. void Java_org_rocksdb_ConfigOptions_setSanityLevel(JNIEnv *, jclass,
  90. jlong handle, jbyte level) {
  91. auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle);
  92. cfg_opt->sanity_level =
  93. ROCKSDB_NAMESPACE::SanityLevelJni::toCppSanityLevel(level);
  94. }