| // Copyright (c) 2011 The LevelDB Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. See the AUTHORS file for names of contributors. |
| |
| #pragma once |
| |
| #ifndef ROCKSDB_LITE |
| |
| #include <string> |
| #include "rocksdb/options.h" |
| #include "rocksdb/table.h" |
| |
| namespace rocksdb { |
| |
| struct EnvOptions; |
| |
| using std::unique_ptr; |
| class Status; |
| class RandomAccessFile; |
| class WritableFile; |
| class Table; |
| class TableBuilder; |
| |
| class AdaptiveTableFactory : public TableFactory { |
| public: |
| ~AdaptiveTableFactory() {} |
| |
| explicit AdaptiveTableFactory( |
| std::shared_ptr<TableFactory> table_factory_to_write, |
| std::shared_ptr<TableFactory> block_based_table_factory, |
| std::shared_ptr<TableFactory> plain_table_factory, |
| std::shared_ptr<TableFactory> cuckoo_table_factory); |
| |
| const char* Name() const override { return "AdaptiveTableFactory"; } |
| |
| Status NewTableReader( |
| const TableReaderOptions& table_reader_options, |
| unique_ptr<RandomAccessFileReader>&& file, uint64_t file_size, |
| unique_ptr<TableReader>* table, |
| bool prefetch_index_and_filter_in_cache = true) const override; |
| |
| TableBuilder* NewTableBuilder( |
| const TableBuilderOptions& table_builder_options, |
| uint32_t column_family_id, WritableFileWriter* file) const override; |
| |
| // Sanitizes the specified DB Options. |
| Status SanitizeOptions(const DBOptions& db_opts, |
| const ColumnFamilyOptions& cf_opts) const override { |
| return Status::OK(); |
| } |
| |
| std::string GetPrintableTableOptions() const override; |
| |
| private: |
| std::shared_ptr<TableFactory> table_factory_to_write_; |
| std::shared_ptr<TableFactory> block_based_table_factory_; |
| std::shared_ptr<TableFactory> plain_table_factory_; |
| std::shared_ptr<TableFactory> cuckoo_table_factory_; |
| }; |
| |
| } // namespace rocksdb |
| #endif // ROCKSDB_LITE |