pw_kvs: Move EntrySize to the EntryHeader class
Change-Id: I4b2dd6d6e9e632df9d39bcfad1c2a6ac321ab317
diff --git a/pw_kvs/format.cc b/pw_kvs/format.cc
index 819b541..d53856c 100644
--- a/pw_kvs/format.cc
+++ b/pw_kvs/format.cc
@@ -64,7 +64,7 @@
byte buffer[32];
address += checked_data_offset();
- size_t bytes_to_read = entry_size() - checked_data_offset();
+ size_t bytes_to_read = size() - checked_data_offset();
while (bytes_to_read > 0u) {
const size_t read_size = std::min(sizeof(buffer), bytes_to_read);
diff --git a/pw_kvs/key_value_store.cc b/pw_kvs/key_value_store.cc
index 86b8bf4..0169301 100644
--- a/pw_kvs/key_value_store.cc
+++ b/pw_kvs/key_value_store.cc
@@ -45,14 +45,6 @@
return hash;
}
-constexpr size_t EntrySize(string_view key, span<const byte> value) {
- return sizeof(EntryHeader) + key.size() + value.size();
-}
-
-constexpr size_t EntrySize(const EntryHeader& header) {
- return sizeof(EntryHeader) + header.key_length() + header.value_length();
-}
-
} // namespace
Status KeyValueStore::Init() {
@@ -132,7 +124,7 @@
key_descriptor.address = key_descriptor_list_[key_id].address;
EntryHeader header;
TRY(ReadEntryHeader(key_descriptor, &header));
- sector_map_[sector_id].valid_bytes += header.entry_size();
+ sector_map_[sector_id].valid_bytes += header.size();
}
enabled_ = true;
return Status::OK;
@@ -154,9 +146,9 @@
DBG(" Checksum = 0x%zx", size_t(header.checksum()));
DBG(" Key length = 0x%zx", size_t(header.key_length()));
DBG(" Value length = 0x%zx", size_t(header.value_length()));
- DBG(" Entry size = 0x%zx", size_t(header.entry_size()));
+ DBG(" Entry size = 0x%zx", size_t(header.size()));
DBG(" Padded size = 0x%zx",
- size_t(AlignUp(header.entry_size(), alignment_bytes)));
+ size_t(AlignUp(header.size(), alignment_bytes)));
if (HeaderLooksLikeUnwrittenData(header)) {
return Status::NOT_FOUND;
@@ -190,7 +182,7 @@
// TODO: Extract this to something like "NextValidEntryAddress".
*next_entry_address =
- AlignUp(key_descriptor.address + header.entry_size(), alignment_bytes);
+ AlignUp(key_descriptor.address + header.size(), alignment_bytes);
return Status::OK;
}
@@ -410,7 +402,7 @@
string_view key,
span<const byte> value) {
SectorDescriptor* sector;
- TRY(FindOrRecoverSectorWithSpace(§or, EntrySize(key, value)));
+ TRY(FindOrRecoverSectorWithSpace(§or, EntryHeader::size(key, value)));
DBG("Writing existing entry; found sector: %d",
static_cast<int>(sector - sector_map_.data()));
return AppendEntry(sector, key_descriptor, key, value);
@@ -433,7 +425,7 @@
key_descriptor.key_version = 0; // will be incremented by AppendEntry()
SectorDescriptor* sector;
- TRY(FindOrRecoverSectorWithSpace(§or, EntrySize(key, value)));
+ TRY(FindOrRecoverSectorWithSpace(§or, EntryHeader::size(key, value)));
DBG("Writing new entry; found sector: %d",
static_cast<int>(sector - sector_map_.data()));
TRY(AppendEntry(sector, &key_descriptor, key, value));
@@ -475,7 +467,7 @@
// Find a new sector for the entry and write it to the new location.
SectorDescriptor* new_sector =
- FindSectorWithSpace(EntrySize(header), old_sector, true);
+ FindSectorWithSpace(header.size(), old_sector, true);
if (new_sector == nullptr) {
return Status::RESOURCE_EXHAUSTED;
}
diff --git a/pw_kvs/pw_kvs_private/format.h b/pw_kvs/pw_kvs_private/format.h
index d89fc9e..2c05889 100644
--- a/pw_kvs/pw_kvs_private/format.h
+++ b/pw_kvs/pw_kvs_private/format.h
@@ -45,8 +45,14 @@
FlashPartition::Address header_address,
ChecksumAlgorithm* algorithm) const;
- size_t entry_size() const {
- return sizeof(*this) + key_length() + value_length();
+ // Calculates the total size of the entry: header, key, and value.
+ static constexpr size_t size(std::string_view key,
+ span<const std::byte> value) {
+ return sizeof(EntryHeader) + key.size() + value.size();
+ }
+
+ size_t size() const {
+ return sizeof(EntryHeader) + key_length() + value_length();
}
uint32_t magic() const { return magic_; }