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