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 #pragma once
7 
8 #ifndef ROCKSDB_LITE
9 
10 #include "rocksdb/iterator.h"
11 #include "rocksdb/options.h"
12 #include "rocksdb/slice.h"
13 #include "rocksdb/table_properties.h"
14 
15 namespace ROCKSDB_NAMESPACE {
16 
17 // SstFileReader is used to read sst files that are generated by DB or
18 // SstFileWriter.
19 class SstFileReader {
20  public:
21   SstFileReader(const Options& options);
22 
23   ~SstFileReader();
24 
25   // Prepares to read from the file located at "file_path".
26   Status Open(const std::string& file_path);
27 
28   // Returns a new iterator over the table contents.
29   // Most read options provide the same control as we read from DB.
30   // If "snapshot" is nullptr, the iterator returns only the latest keys.
31   Iterator* NewIterator(const ReadOptions& options);
32 
33   std::shared_ptr<const TableProperties> GetTableProperties() const;
34 
35   // Verifies whether there is corruption in this table.
36   Status VerifyChecksum(const ReadOptions& /*read_options*/);
37 
VerifyChecksum()38   Status VerifyChecksum() { return VerifyChecksum(ReadOptions()); }
39 
40  private:
41   struct Rep;
42   std::unique_ptr<Rep> rep_;
43 };
44 
45 }  // namespace ROCKSDB_NAMESPACE
46 
47 #endif  // !ROCKSDB_LITE
48