| // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. |
| // This source code is licensed under both the GPLv2 (found in the |
| // COPYING file in the root directory) and Apache 2.0 License |
| // (found in the LICENSE.Apache file in the root directory). |
| |
| package org.rocksdb; |
| |
| /** |
| * <p>An iterator that yields a sequence of key/value pairs from a source. |
| * Multiple implementations are provided by this library. |
| * In particular, iterators are provided |
| * to access the contents of a Table or a DB.</p> |
| * |
| * <p>Multiple threads can invoke const methods on an RocksIterator without |
| * external synchronization, but if any of the threads may call a |
| * non-const method, all threads accessing the same RocksIterator must use |
| * external synchronization.</p> |
| * |
| * @see org.rocksdb.RocksObject |
| */ |
| public class RocksIterator extends AbstractRocksIterator<RocksDB> { |
| protected RocksIterator(RocksDB rocksDB, long nativeHandle) { |
| super(rocksDB, nativeHandle); |
| } |
| |
| /** |
| * <p>Return the key for the current entry. The underlying storage for |
| * the returned slice is valid only until the next modification of |
| * the iterator.</p> |
| * |
| * <p>REQUIRES: {@link #isValid()}</p> |
| * |
| * @return key for the current entry. |
| */ |
| public byte[] key() { |
| assert(isOwningHandle()); |
| return key0(nativeHandle_); |
| } |
| |
| /** |
| * <p>Return the value for the current entry. The underlying storage for |
| * the returned slice is valid only until the next modification of |
| * the iterator.</p> |
| * |
| * <p>REQUIRES: !AtEnd() && !AtStart()</p> |
| * @return value for the current entry. |
| */ |
| public byte[] value() { |
| assert(isOwningHandle()); |
| return value0(nativeHandle_); |
| } |
| |
| @Override protected final native void disposeInternal(final long handle); |
| @Override final native boolean isValid0(long handle); |
| @Override final native void seekToFirst0(long handle); |
| @Override final native void seekToLast0(long handle); |
| @Override final native void next0(long handle); |
| @Override final native void prev0(long handle); |
| @Override final native void seek0(long handle, byte[] target, int targetLen); |
| @Override final native void status0(long handle) throws RocksDBException; |
| |
| private native byte[] key0(long handle); |
| private native byte[] value0(long handle); |
| } |