| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
- // 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_NAMESPACE {
- struct EnvOptions;
- 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,
- std::unique_ptr<RandomAccessFileReader>&& file, uint64_t file_size,
- std::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_NAMESPACE
- #endif // ROCKSDB_LITE
|