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 package org.rocksdb;
7 
8 public class SstFileReader extends RocksObject {
9   static {
RocksDB.loadLibrary()10     RocksDB.loadLibrary();
11   }
12 
SstFileReader(final Options options)13   public SstFileReader(final Options options) {
14     super(newSstFileReader(options.nativeHandle_));
15   }
16 
17   /**
18    * Returns an iterator that will iterate on all keys in the default
19    * column family including both keys in the DB and uncommitted keys in this
20    * transaction.
21    *
22    * Setting {@link ReadOptions#setSnapshot(Snapshot)} will affect what is read
23    * from the DB but will NOT change which keys are read from this transaction
24    * (the keys in this transaction do not yet belong to any snapshot and will be
25    * fetched regardless).
26    *
27    * Caller is responsible for deleting the returned Iterator.
28    *
29    * @param readOptions Read options.
30    *
31    * @return instance of iterator object.
32    */
newIterator(final ReadOptions readOptions)33   public SstFileReaderIterator newIterator(final ReadOptions readOptions) {
34     assert (isOwningHandle());
35     long iter = newIterator(nativeHandle_, readOptions.nativeHandle_);
36     return new SstFileReaderIterator(this, iter);
37   }
38 
39   /**
40    * Prepare SstFileReader to read a file.
41    *
42    * @param filePath the location of file
43    *
44    * @throws RocksDBException thrown if error happens in underlying
45    *    native library.
46    */
open(final String filePath)47   public void open(final String filePath) throws RocksDBException {
48     open(nativeHandle_, filePath);
49   }
50 
51   /**
52    * Verify checksum
53    *
54    * @throws RocksDBException if the checksum is not valid
55    */
verifyChecksum()56   public void verifyChecksum() throws RocksDBException {
57     verifyChecksum(nativeHandle_);
58   }
59 
60   /**
61    * Get the properties of the table.
62    *
63    * @return the properties
64    *
65    * @throws RocksDBException if an error occurs whilst getting the table
66    *     properties
67    */
getTableProperties()68   public TableProperties getTableProperties() throws RocksDBException {
69     return getTableProperties(nativeHandle_);
70   }
71 
disposeInternal(final long handle)72   @Override protected final native void disposeInternal(final long handle);
newIterator(final long handle, final long readOptionsHandle)73   private native long newIterator(final long handle, final long readOptionsHandle);
74 
open(final long handle, final String filePath)75   private native void open(final long handle, final String filePath)
76       throws RocksDBException;
77 
newSstFileReader(final long optionsHandle)78   private native static long newSstFileReader(final long optionsHandle);
verifyChecksum(final long handle)79   private native void verifyChecksum(final long handle) throws RocksDBException;
getTableProperties(final long handle)80   private native TableProperties getTableProperties(final long handle)
81       throws RocksDBException;
82 }
83