This commit is contained in:
Ankit Gupta 2014-04-19 13:21:06 -07:00
parent 06b590dd7c
commit 1574e0c41a
5 changed files with 30 additions and 22 deletions

View File

@ -8,12 +8,12 @@ package org.rocksdb;
/**
* An iterator yields a sequence of key/value pairs from a source.
* The following class defines the interface. Multiple implementations
* are provided by this library. In particular, iterators are provided
* are provided by this library. In particular, iterators are provided
* to access the contents of a Table or a DB.
*
* Multiple threads can invoke const methods on an Iterator without
*
* Multiple threads can invoke const methods on an Iterator without
* external synchronization, but if any of the threads may call a
* non-const method, all threads accessing the same Iterator must use
* non-const method, all threads accessing the same Iterator must use
* external synchronization.
*/
public class Iterator {
@ -50,7 +50,7 @@ public class Iterator {
assert(isInitialized());
seekToLast0(nativeHandle_);
}
/**
* Moves to the next entry in the source. After this call, Valid() is
* true iff the iterator was not positioned at the last entry in the source.
@ -60,7 +60,7 @@ public class Iterator {
assert(isInitialized());
next0(nativeHandle_);
}
/**
* Moves to the previous entry in the source. After this call, Valid() is
* true iff the iterator was not positioned at the first entry in source.
@ -73,7 +73,7 @@ public class Iterator {
/**
* Return the key for the current entry. The underlying storage for
* the returned slice is valid only until the next modification of
* the returned slice is valid only until the next modification of
* the iterator.
* REQUIRES: Valid()
* @return key for the current entry.
@ -84,9 +84,9 @@ public class Iterator {
}
/**
* Return the value for the current entry. The underlying storage for
* the returned slice is valid only until the next modification of
* the iterator.
* Return the value for the current entry. The underlying storage for
* the returned slice is valid only until the next modification of
* the iterator.
* REQUIRES: !AtEnd() && !AtStart()
* @return value for the current entry.
*/
@ -106,11 +106,12 @@ public class Iterator {
}
/**
* If an error has occurred, return it. Else return an ok status.
* If non-blocking IO is requested and this operation cannot be
* If an error has occurred, return it. Else return an ok status.
* If non-blocking IO is requested and this operation cannot be
* satisfied without doing some IO, then this returns Status::Incomplete().
*
*/
public void status(){
public void status() throws RocksDBException {
assert(isInitialized());
status0(nativeHandle_);
}

View File

@ -140,9 +140,11 @@ public class RocksDB {
* Return a heap-allocated iterator over the contents of the database.
* The result of newIterator() is initially invalid (caller must
* call one of the Seek methods on the iterator before using it).
*
*
* Caller should close the iterator when it is no longer needed.
* The returned iterator should be closed before this db is closed.
*
* @return instance of iterator object.
*/
public Iterator newIterator() {
return new Iterator(iterator0(nativeHandle_));

View File

@ -80,9 +80,9 @@ jbyteArray Java_org_rocksdb_Iterator_key0(
rocksdb::Slice key_slice = it->key();
jbyteArray jkey = env->NewByteArray(key_slice.size());
env->SetByteArrayRegion(
jkey, 0, key_slice.size(),
reinterpret_cast<const jbyte*>(key_slice.data()));
env->SetByteArrayRegion(
jkey, 0, key_slice.size(),
reinterpret_cast<const jbyte*>(key_slice.data()));
return jkey;
}
@ -97,9 +97,9 @@ jbyteArray Java_org_rocksdb_Iterator_value0(
rocksdb::Slice value_slice = it->value();
jbyteArray jvalue = env->NewByteArray(value_slice.size());
env->SetByteArrayRegion(
jvalue, 0, value_slice.size(),
reinterpret_cast<const jbyte*>(value_slice.data()));
env->SetByteArrayRegion(
jvalue, 0, value_slice.size(),
reinterpret_cast<const jbyte*>(value_slice.data()));
return jvalue;
}

View File

@ -224,7 +224,7 @@ class IteratorJni {
}
// Get the field id of the member variable of org.rocksdb.Iterator
// that stores the pointer to rocksdb::Iterator
// that stores the pointer to rocksdb::Iterator.
static jfieldID getHandleFieldID(JNIEnv* env) {
static jfieldID fid = env->GetFieldID(
getJClass(env), "nativeHandle_", "J");
@ -232,7 +232,7 @@ class IteratorJni {
return fid;
}
// Get the pointer to rocksdb::Iterator
// Get the pointer to rocksdb::Iterator.
static rocksdb::Iterator* getHandle(JNIEnv* env, jobject jobj) {
return reinterpret_cast<rocksdb::Iterator*>(
env->GetLongField(jobj, getHandleFieldID(env)));

View File

@ -297,6 +297,11 @@ void Java_org_rocksdb_RocksDB_close0(
rocksdb::RocksDBJni::setHandle(env, java_db, nullptr);
}
/*
* Class: org_rocksdb_RocksDB
* Method: iterator0
* Signature: (J)J
*/
jlong Java_org_rocksdb_RocksDB_iterator0(
JNIEnv* env, jobject jdb, jlong db_handle) {
auto db = reinterpret_cast<rocksdb::DB*>(db_handle);