MCPcopy Create free account
hub / github.com/ElementsProject/elements / WriteSnapshot

Method WriteSnapshot

src/leveldb/db/version_set.cc:1065–1093  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1063}
1064
1065Status VersionSet::WriteSnapshot(log::Writer* log) {
1066 // TODO: Break up into multiple records to reduce memory usage on recovery?
1067
1068 // Save metadata
1069 VersionEdit edit;
1070 edit.SetComparatorName(icmp_.user_comparator()->Name());
1071
1072 // Save compaction pointers
1073 for (int level = 0; level < config::kNumLevels; level++) {
1074 if (!compact_pointer_[level].empty()) {
1075 InternalKey key;
1076 key.DecodeFrom(compact_pointer_[level]);
1077 edit.SetCompactPointer(level, key);
1078 }
1079 }
1080
1081 // Save files
1082 for (int level = 0; level < config::kNumLevels; level++) {
1083 const std::vector<FileMetaData*>& files = current_->files_[level];
1084 for (size_t i = 0; i < files.size(); i++) {
1085 const FileMetaData* f = files[i];
1086 edit.AddFile(level, f->number, f->file_size, f->smallest, f->largest);
1087 }
1088 }
1089
1090 std::string record;
1091 edit.EncodeTo(&record);
1092 return log->AddRecord(record);
1093}
1094
1095int VersionSet::NumLevelFiles(int level) const {
1096 assert(level >= 0);

Callers

nothing calls this directly

Calls 10

SetComparatorNameMethod · 0.80
SetCompactPointerMethod · 0.80
AddFileMethod · 0.80
AddRecordMethod · 0.80
NameMethod · 0.45
user_comparatorMethod · 0.45
emptyMethod · 0.45
DecodeFromMethod · 0.45
sizeMethod · 0.45
EncodeToMethod · 0.45

Tested by

no test coverage detected