49 index_block_options(opt),
53 index_block(&index_block_options),
56 filter_block(opt.filter_policy == NULL ? NULL
58 pending_index_entry(false) {
64 : rep_(new
Rep(options, file)) {
103 std::string handle_encoding;
148 Slice block_contents;
153 block_contents = raw;
159 compressed->size() < raw.
size() - (raw.
size() / 8u)) {
160 block_contents = *compressed;
164 block_contents = raw;
183 char trailer[kBlockTrailerSize];
190 r->
offset += block_contents.
size() + kBlockTrailerSize;
205 BlockHandle filter_block_handle, metaindex_block_handle, index_block_handle;
210 &filter_block_handle);
218 std::string key =
"filter.";
220 std::string handle_encoding;
221 filter_block_handle.
EncodeTo(&handle_encoding);
222 meta_index_block.
Add(key, handle_encoding);
226 WriteBlock(&meta_index_block, &metaindex_block_handle);
233 std::string handle_encoding;
246 std::string footer_encoding;
250 r->
offset += footer_encoding.size();
void Add(const Slice &key, const Slice &value)
void WriteRawBlock(const Slice &data, CompressionType, BlockHandle *handle)
const char * data() const
virtual Status Append(const Slice &data)=0
void EncodeFixed32(char *buf, uint32_t value)
Status ChangeOptions(const Options &options)
virtual void FindShortSuccessor(std::string *key) const =0
void set_size(uint64_t size)
uint32_t Mask(uint32_t crc)
void set_offset(uint64_t offset)
virtual const char * Name() const =0
FilterBlockBuilder * filter_block
static Status InvalidArgument(const Slice &msg, const Slice &msg2=Slice())
void EncodeTo(std::string *dst) const
bool Snappy_Compress(const char *input, size_t input_length, std::string *output)
unsigned long long uint64_t
size_t CurrentSizeEstimate() const
uint64_t FileSize() const
Rep(const Options &opt, WritableFile *f)
const FilterPolicy * filter_policy
uint32_t Value(const char *data, size_t n)
void WriteBlock(BlockBuilder *block, BlockHandle *handle)
CompressionType compression
virtual void FindShortestSeparator(std::string *start, const Slice &limit) const =0
virtual int Compare(const Slice &a, const Slice &b) const =0
Options index_block_options
int block_restart_interval
std::string compressed_output
void AddKey(const Slice &key)
TableBuilder(const Options &options, WritableFile *file)
uint64_t NumEntries() const
uint32_t Extend(uint32_t crc, const char *buf, size_t size)
void StartBlock(uint64_t block_offset)
const Comparator * comparator
void Add(const Slice &key, const Slice &value)
BlockHandle pending_handle