#include "table/vtable_builder.h"
|
|
|
|
#include "leveldb/env.h"
|
|
|
|
namespace leveldb {
|
|
|
|
VTableBuilder::VTableBuilder(const Options& options, WritableFile* file)
|
|
: file_(file),
|
|
encoder_() {}
|
|
|
|
void VTableBuilder::Add(const VTableRecord& record, VTableHandle* handle) {
|
|
if (!ok()) return;
|
|
|
|
encoder_.Encode(record);
|
|
handle->offset = file_size_;
|
|
handle->size = encoder_.GetEncodedSize();
|
|
file_size_ += encoder_.GetEncodedSize();
|
|
|
|
status_ = file_->Append(encoder_.GetHeader().ToString() +
|
|
encoder_.GetRecord().ToString());
|
|
|
|
assert(ok());
|
|
//TODO: meta info support in the future
|
|
}
|
|
|
|
Status VTableBuilder::Finish() {
|
|
if (!ok()) return status();
|
|
|
|
status_ = file_->Flush();
|
|
|
|
return status();
|
|
}
|
|
|
|
void VTableBuilder::Abandon() { }
|
|
|
|
} // namespace leveldb
|