compaction_job_info.cc 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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++ for
  7. // ROCKSDB_NAMESPACE::CompactionJobInfo.
  8. #include <jni.h>
  9. #include "include/org_rocksdb_CompactionJobInfo.h"
  10. #include "rocksdb/listener.h"
  11. #include "rocksjni/portal.h"
  12. /*
  13. * Class: org_rocksdb_CompactionJobInfo
  14. * Method: newCompactionJobInfo
  15. * Signature: ()J
  16. */
  17. jlong Java_org_rocksdb_CompactionJobInfo_newCompactionJobInfo(
  18. JNIEnv*, jclass) {
  19. auto* compact_job_info = new ROCKSDB_NAMESPACE::CompactionJobInfo();
  20. return reinterpret_cast<jlong>(compact_job_info);
  21. }
  22. /*
  23. * Class: org_rocksdb_CompactionJobInfo
  24. * Method: disposeInternal
  25. * Signature: (J)V
  26. */
  27. void Java_org_rocksdb_CompactionJobInfo_disposeInternal(
  28. JNIEnv*, jobject, jlong jhandle) {
  29. auto* compact_job_info =
  30. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  31. delete compact_job_info;
  32. }
  33. /*
  34. * Class: org_rocksdb_CompactionJobInfo
  35. * Method: columnFamilyName
  36. * Signature: (J)[B
  37. */
  38. jbyteArray Java_org_rocksdb_CompactionJobInfo_columnFamilyName(
  39. JNIEnv* env, jclass, jlong jhandle) {
  40. auto* compact_job_info =
  41. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  42. return ROCKSDB_NAMESPACE::JniUtil::copyBytes(env, compact_job_info->cf_name);
  43. }
  44. /*
  45. * Class: org_rocksdb_CompactionJobInfo
  46. * Method: status
  47. * Signature: (J)Lorg/rocksdb/Status;
  48. */
  49. jobject Java_org_rocksdb_CompactionJobInfo_status(
  50. JNIEnv* env, jclass, jlong jhandle) {
  51. auto* compact_job_info =
  52. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  53. return ROCKSDB_NAMESPACE::StatusJni::construct(env, compact_job_info->status);
  54. }
  55. /*
  56. * Class: org_rocksdb_CompactionJobInfo
  57. * Method: threadId
  58. * Signature: (J)J
  59. */
  60. jlong Java_org_rocksdb_CompactionJobInfo_threadId(
  61. JNIEnv*, jclass, jlong jhandle) {
  62. auto* compact_job_info =
  63. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  64. return static_cast<jlong>(compact_job_info->thread_id);
  65. }
  66. /*
  67. * Class: org_rocksdb_CompactionJobInfo
  68. * Method: jobId
  69. * Signature: (J)I
  70. */
  71. jint Java_org_rocksdb_CompactionJobInfo_jobId(
  72. JNIEnv*, jclass, jlong jhandle) {
  73. auto* compact_job_info =
  74. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  75. return static_cast<jint>(compact_job_info->job_id);
  76. }
  77. /*
  78. * Class: org_rocksdb_CompactionJobInfo
  79. * Method: baseInputLevel
  80. * Signature: (J)I
  81. */
  82. jint Java_org_rocksdb_CompactionJobInfo_baseInputLevel(
  83. JNIEnv*, jclass, jlong jhandle) {
  84. auto* compact_job_info =
  85. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  86. return static_cast<jint>(compact_job_info->base_input_level);
  87. }
  88. /*
  89. * Class: org_rocksdb_CompactionJobInfo
  90. * Method: outputLevel
  91. * Signature: (J)I
  92. */
  93. jint Java_org_rocksdb_CompactionJobInfo_outputLevel(
  94. JNIEnv*, jclass, jlong jhandle) {
  95. auto* compact_job_info =
  96. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  97. return static_cast<jint>(compact_job_info->output_level);
  98. }
  99. /*
  100. * Class: org_rocksdb_CompactionJobInfo
  101. * Method: inputFiles
  102. * Signature: (J)[Ljava/lang/String;
  103. */
  104. jobjectArray Java_org_rocksdb_CompactionJobInfo_inputFiles(
  105. JNIEnv* env, jclass, jlong jhandle) {
  106. auto* compact_job_info =
  107. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  108. return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(
  109. env, &compact_job_info->input_files);
  110. }
  111. /*
  112. * Class: org_rocksdb_CompactionJobInfo
  113. * Method: outputFiles
  114. * Signature: (J)[Ljava/lang/String;
  115. */
  116. jobjectArray Java_org_rocksdb_CompactionJobInfo_outputFiles(
  117. JNIEnv* env, jclass, jlong jhandle) {
  118. auto* compact_job_info =
  119. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  120. return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(
  121. env, &compact_job_info->output_files);
  122. }
  123. /*
  124. * Class: org_rocksdb_CompactionJobInfo
  125. * Method: tableProperties
  126. * Signature: (J)Ljava/util/Map;
  127. */
  128. jobject Java_org_rocksdb_CompactionJobInfo_tableProperties(
  129. JNIEnv* env, jclass, jlong jhandle) {
  130. auto* compact_job_info =
  131. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  132. auto* map = &compact_job_info->table_properties;
  133. jobject jhash_map = ROCKSDB_NAMESPACE::HashMapJni::construct(
  134. env, static_cast<uint32_t>(map->size()));
  135. if (jhash_map == nullptr) {
  136. // exception occurred
  137. return nullptr;
  138. }
  139. const ROCKSDB_NAMESPACE::HashMapJni::FnMapKV<
  140. const std::string,
  141. std::shared_ptr<const ROCKSDB_NAMESPACE::TableProperties>, jobject,
  142. jobject>
  143. fn_map_kv =
  144. [env](const std::pair<
  145. const std::string,
  146. std::shared_ptr<const ROCKSDB_NAMESPACE::TableProperties>>&
  147. kv) {
  148. jstring jkey = ROCKSDB_NAMESPACE::JniUtil::toJavaString(
  149. env, &(kv.first), false);
  150. if (env->ExceptionCheck()) {
  151. // an error occurred
  152. return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
  153. }
  154. jobject jtable_properties =
  155. ROCKSDB_NAMESPACE::TablePropertiesJni::fromCppTableProperties(
  156. env, *(kv.second.get()));
  157. if (env->ExceptionCheck()) {
  158. // an error occurred
  159. env->DeleteLocalRef(jkey);
  160. return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
  161. }
  162. return std::unique_ptr<std::pair<jobject, jobject>>(
  163. new std::pair<jobject, jobject>(static_cast<jobject>(jkey),
  164. jtable_properties));
  165. };
  166. if (!ROCKSDB_NAMESPACE::HashMapJni::putAll(env, jhash_map, map->begin(),
  167. map->end(), fn_map_kv)) {
  168. // exception occurred
  169. return nullptr;
  170. }
  171. return jhash_map;
  172. }
  173. /*
  174. * Class: org_rocksdb_CompactionJobInfo
  175. * Method: compactionReason
  176. * Signature: (J)B
  177. */
  178. jbyte Java_org_rocksdb_CompactionJobInfo_compactionReason(
  179. JNIEnv*, jclass, jlong jhandle) {
  180. auto* compact_job_info =
  181. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  182. return ROCKSDB_NAMESPACE::CompactionReasonJni::toJavaCompactionReason(
  183. compact_job_info->compaction_reason);
  184. }
  185. /*
  186. * Class: org_rocksdb_CompactionJobInfo
  187. * Method: compression
  188. * Signature: (J)B
  189. */
  190. jbyte Java_org_rocksdb_CompactionJobInfo_compression(
  191. JNIEnv*, jclass, jlong jhandle) {
  192. auto* compact_job_info =
  193. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  194. return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType(
  195. compact_job_info->compression);
  196. }
  197. /*
  198. * Class: org_rocksdb_CompactionJobInfo
  199. * Method: stats
  200. * Signature: (J)J
  201. */
  202. jlong Java_org_rocksdb_CompactionJobInfo_stats(
  203. JNIEnv *, jclass, jlong jhandle) {
  204. auto* compact_job_info =
  205. reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
  206. auto* stats = new ROCKSDB_NAMESPACE::CompactionJobStats();
  207. stats->Add(compact_job_info->stats);
  208. return reinterpret_cast<jlong>(stats);
  209. }