#pragma once
#include <stdint.h>
#include <memory>
#include <string>
#include "rocksdb/flush_block_policy.h"
#include "rocksdb/options.h"
#include "rocksdb/table.h"
namespace
rocksdb {
struct
Options;
struct
EnvOptions;
using
std::unique_ptr;
class
BlockBasedTableBuilder;
class
BlockBasedTableFactory :
public
TableFactory {
public
:
explicit
BlockBasedTableFactory(
const
BlockBasedTableOptions& table_options = BlockBasedTableOptions());
~BlockBasedTableFactory() {}
const
char
* Name()
const
override {
return
"BlockBasedTable"
; }
Status NewTableReader(
const
Options& options,
const
EnvOptions& soptions,
const
InternalKeyComparator& internal_comparator,
unique_ptr<RandomAccessFile>&& file, uint64_t file_size,
unique_ptr<TableReader>* table_reader)
const
override;
TableBuilder* NewTableBuilder(
const
Options& options,
const
InternalKeyComparator& internal_comparator,
WritableFile* file, CompressionType compression_type)
const
override;
private
:
BlockBasedTableOptions table_options_;
};
extern
const
std::string kHashIndexPrefixesBlock;
extern
const
std::string kHashIndexPrefixesMetadataBlock;
}