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::CompactionOptions.
8 
9 #include <jni.h>
10 
11 #include "include/org_rocksdb_CompactionOptions.h"
12 #include "rocksdb/options.h"
13 #include "rocksjni/portal.h"
14 
15 
16 /*
17  * Class:     org_rocksdb_CompactionOptions
18  * Method:    newCompactionOptions
19  * Signature: ()J
20  */
Java_org_rocksdb_CompactionOptions_newCompactionOptions(JNIEnv *,jclass)21 jlong Java_org_rocksdb_CompactionOptions_newCompactionOptions(
22     JNIEnv*, jclass) {
23   auto* compact_opts = new ROCKSDB_NAMESPACE::CompactionOptions();
24   return reinterpret_cast<jlong>(compact_opts);
25 }
26 
27 /*
28  * Class:     org_rocksdb_CompactionOptions
29  * Method:    disposeInternal
30  * Signature: (J)V
31  */
Java_org_rocksdb_CompactionOptions_disposeInternal(JNIEnv *,jobject,jlong jhandle)32 void Java_org_rocksdb_CompactionOptions_disposeInternal(
33     JNIEnv *, jobject, jlong jhandle) {
34   auto* compact_opts =
35       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
36   delete compact_opts;
37 }
38 
39 /*
40  * Class:     org_rocksdb_CompactionOptions
41  * Method:    compression
42  * Signature: (J)B
43  */
Java_org_rocksdb_CompactionOptions_compression(JNIEnv *,jclass,jlong jhandle)44 jbyte Java_org_rocksdb_CompactionOptions_compression(
45     JNIEnv*, jclass, jlong jhandle) {
46   auto* compact_opts =
47       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
48   return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType(
49       compact_opts->compression);
50 }
51 
52 /*
53  * Class:     org_rocksdb_CompactionOptions
54  * Method:    setCompression
55  * Signature: (JB)V
56  */
Java_org_rocksdb_CompactionOptions_setCompression(JNIEnv *,jclass,jlong jhandle,jbyte jcompression_type_value)57 void Java_org_rocksdb_CompactionOptions_setCompression(
58     JNIEnv*, jclass, jlong jhandle, jbyte jcompression_type_value) {
59   auto* compact_opts =
60       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
61   compact_opts->compression =
62       ROCKSDB_NAMESPACE::CompressionTypeJni::toCppCompressionType(
63           jcompression_type_value);
64 }
65 
66 /*
67  * Class:     org_rocksdb_CompactionOptions
68  * Method:    outputFileSizeLimit
69  * Signature: (J)J
70  */
Java_org_rocksdb_CompactionOptions_outputFileSizeLimit(JNIEnv *,jclass,jlong jhandle)71 jlong Java_org_rocksdb_CompactionOptions_outputFileSizeLimit(
72     JNIEnv*, jclass, jlong jhandle) {
73   auto* compact_opts =
74       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
75   return static_cast<jlong>(
76       compact_opts->output_file_size_limit);
77 }
78 
79 /*
80  * Class:     org_rocksdb_CompactionOptions
81  * Method:    setOutputFileSizeLimit
82  * Signature: (JJ)V
83  */
Java_org_rocksdb_CompactionOptions_setOutputFileSizeLimit(JNIEnv *,jclass,jlong jhandle,jlong joutput_file_size_limit)84 void Java_org_rocksdb_CompactionOptions_setOutputFileSizeLimit(
85     JNIEnv*, jclass, jlong jhandle, jlong joutput_file_size_limit) {
86   auto* compact_opts =
87       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
88   compact_opts->output_file_size_limit =
89       static_cast<uint64_t>(joutput_file_size_limit);
90 }
91 
92 /*
93  * Class:     org_rocksdb_CompactionOptions
94  * Method:    maxSubcompactions
95  * Signature: (J)I
96  */
Java_org_rocksdb_CompactionOptions_maxSubcompactions(JNIEnv *,jclass,jlong jhandle)97 jint Java_org_rocksdb_CompactionOptions_maxSubcompactions(
98     JNIEnv*, jclass, jlong jhandle) {
99   auto* compact_opts =
100       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
101   return static_cast<jint>(
102       compact_opts->max_subcompactions);
103 }
104 
105 /*
106  * Class:     org_rocksdb_CompactionOptions
107  * Method:    setMaxSubcompactions
108  * Signature: (JI)V
109  */
Java_org_rocksdb_CompactionOptions_setMaxSubcompactions(JNIEnv *,jclass,jlong jhandle,jint jmax_subcompactions)110 void Java_org_rocksdb_CompactionOptions_setMaxSubcompactions(
111     JNIEnv*, jclass, jlong jhandle, jint jmax_subcompactions) {
112   auto* compact_opts =
113       reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
114   compact_opts->max_subcompactions =
115       static_cast<uint32_t>(jmax_subcompactions);
116 }
117