diff --git a/db/fields.cc b/db/fields.cc index dd37277..c0d979f 100644 --- a/db/fields.cc +++ b/db/fields.cc @@ -7,6 +7,7 @@ namespace leveldb { assert(!field_array.empty()); for (const auto& field : field_array) { this->_fields[field.first] = field.second; + this->size_ += field.first.size() + field.second.size(); } } @@ -25,7 +26,7 @@ namespace leveldb { Slice value = Slice(field.data() + name_size, field.size() - name_size); this->_fields[name.ToString()] = value.ToString(); - + this->size_ += name.ToString().size() + value.ToString().size(); fields = Slice(fields.data() + field_size, fields.size() - field_size); } } diff --git a/db/fields.h b/db/fields.h index 411a29b..1c7ffbf 100644 --- a/db/fields.h +++ b/db/fields.h @@ -33,8 +33,11 @@ namespace leveldb { // 将Fields编码为存入LevelDB的Value std::string Serialize() const; + uint64_t size() const { return size_; } + private: std::map<std::string, std::string> _fields; + uint64_t size_ = 0; }; } // namespace leveldb #endif //STORAGE_LEVELDB_FIELDS_H_