| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | // 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).#pragma once#ifndef ROCKSDB_LITE#include "rocksdb/sst_dump_tool.h"#include <memory>#include <string>#include "db/dbformat.h"#include "file/writable_file_writer.h"#include "options/cf_options.h"namespace ROCKSDB_NAMESPACE {class SstFileDumper { public:  explicit SstFileDumper(const Options& options, const std::string& file_name,                         bool verify_checksum, bool output_hex,                         bool decode_blob_index);  Status ReadSequential(bool print_kv, uint64_t read_num, bool has_from,                        const std::string& from_key, bool has_to,                        const std::string& to_key,                        bool use_from_as_prefix = false);  Status ReadTableProperties(      std::shared_ptr<const TableProperties>* table_properties);  uint64_t GetReadNumber() { return read_num_; }  TableProperties* GetInitTableProperties() { return table_properties_.get(); }  Status VerifyChecksum();  Status DumpTable(const std::string& out_filename);  Status getStatus() { return init_result_; }  int ShowAllCompressionSizes(      size_t block_size,      const std::vector<std::pair<CompressionType, const char*>>&          compression_types); private:  // Get the TableReader implementation for the sst file  Status GetTableReader(const std::string& file_path);  Status ReadTableProperties(uint64_t table_magic_number,                             RandomAccessFileReader* file, uint64_t file_size);  uint64_t CalculateCompressedTableSize(const TableBuilderOptions& tb_options,                                        size_t block_size,                                        uint64_t* num_data_blocks);  Status SetTableOptionsByMagicNumber(uint64_t table_magic_number);  Status SetOldTableOptions();  // Helper function to call the factory with settings specific to the  // factory implementation  Status NewTableReader(const ImmutableCFOptions& ioptions,                        const EnvOptions& soptions,                        const InternalKeyComparator& internal_comparator,                        uint64_t file_size,                        std::unique_ptr<TableReader>* table_reader);  std::string file_name_;  uint64_t read_num_;  bool verify_checksum_;  bool output_hex_;  bool decode_blob_index_;  EnvOptions soptions_;  // options_ and internal_comparator_ will also be used in  // ReadSequential internally (specifically, seek-related operations)  Options options_;  Status init_result_;  std::unique_ptr<TableReader> table_reader_;  std::unique_ptr<RandomAccessFileReader> file_;  const ImmutableCFOptions ioptions_;  const MutableCFOptions moptions_;  InternalKeyComparator internal_comparator_;  std::unique_ptr<TableProperties> table_properties_;};}  // namespace ROCKSDB_NAMESPACE#endif  // ROCKSDB_LITE
 |