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::Iterator methods from Java side.
8
9 #include <jni.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12
13 #include "include/org_rocksdb_TransactionLogIterator.h"
14 #include "rocksdb/transaction_log.h"
15 #include "rocksjni/portal.h"
16
17 /*
18 * Class: org_rocksdb_TransactionLogIterator
19 * Method: disposeInternal
20 * Signature: (J)V
21 */
Java_org_rocksdb_TransactionLogIterator_disposeInternal(JNIEnv *,jobject,jlong handle)22 void Java_org_rocksdb_TransactionLogIterator_disposeInternal(JNIEnv* /*env*/,
23 jobject /*jobj*/,
24 jlong handle) {
25 delete reinterpret_cast<ROCKSDB_NAMESPACE::TransactionLogIterator*>(handle);
26 }
27
28 /*
29 * Class: org_rocksdb_TransactionLogIterator
30 * Method: isValid
31 * Signature: (J)Z
32 */
Java_org_rocksdb_TransactionLogIterator_isValid(JNIEnv *,jobject,jlong handle)33 jboolean Java_org_rocksdb_TransactionLogIterator_isValid(JNIEnv* /*env*/,
34 jobject /*jobj*/,
35 jlong handle) {
36 return reinterpret_cast<ROCKSDB_NAMESPACE::TransactionLogIterator*>(handle)
37 ->Valid();
38 }
39
40 /*
41 * Class: org_rocksdb_TransactionLogIterator
42 * Method: next
43 * Signature: (J)V
44 */
Java_org_rocksdb_TransactionLogIterator_next(JNIEnv *,jobject,jlong handle)45 void Java_org_rocksdb_TransactionLogIterator_next(JNIEnv* /*env*/,
46 jobject /*jobj*/,
47 jlong handle) {
48 reinterpret_cast<ROCKSDB_NAMESPACE::TransactionLogIterator*>(handle)->Next();
49 }
50
51 /*
52 * Class: org_rocksdb_TransactionLogIterator
53 * Method: status
54 * Signature: (J)V
55 */
Java_org_rocksdb_TransactionLogIterator_status(JNIEnv * env,jobject,jlong handle)56 void Java_org_rocksdb_TransactionLogIterator_status(JNIEnv* env,
57 jobject /*jobj*/,
58 jlong handle) {
59 ROCKSDB_NAMESPACE::Status s =
60 reinterpret_cast<ROCKSDB_NAMESPACE::TransactionLogIterator*>(handle)
61 ->status();
62 if (!s.ok()) {
63 ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
64 }
65 }
66
67 /*
68 * Class: org_rocksdb_TransactionLogIterator
69 * Method: getBatch
70 * Signature: (J)Lorg/rocksdb/TransactionLogIterator$BatchResult
71 */
Java_org_rocksdb_TransactionLogIterator_getBatch(JNIEnv * env,jobject,jlong handle)72 jobject Java_org_rocksdb_TransactionLogIterator_getBatch(JNIEnv* env,
73 jobject /*jobj*/,
74 jlong handle) {
75 ROCKSDB_NAMESPACE::BatchResult batch_result =
76 reinterpret_cast<ROCKSDB_NAMESPACE::TransactionLogIterator*>(handle)
77 ->GetBatch();
78 return ROCKSDB_NAMESPACE::BatchResultJni::construct(env, batch_result);
79 }
80