#ifndef VTABLE_BUILDER_H #define VTABLE_BUILDER_H #include "leveldb/options.h" #include "leveldb/slice.h" #include "table/vtable_format.h" #include "util/coding.h" namespace leveldb { class VTableBuilder { public: VTableBuilder(const Options& options, WritableFile* file); // Add a record to the vTable void Add(const VTableRecord& record, VTableHandle* handle); // Builder status, return non-ok iff some error occurs Status status() const { return status_; } // Finish building the vTable Status Finish(); // Abandon building the vTable void Abandon(); private: bool ok() const { return status().ok(); } WritableFile* file_; uint64_t file_size_{0}; Status status_; RecordEncoder encoder_; }; } // namespace leveldb #endif //VTABLE_BUILDER_H