pw_blob_store: Make ctor partition arg a reference
- Make partition argument in the BlobStore constructors a reference.
- Addition comments in header file added.
Change-Id: Id73b4f6e77d0660fb2ab417431ad9cbdcf744b10
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/18623
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Commit-Queue: David Rogers <davidrogers@google.com>
diff --git a/pw_blob_store/blob_store_chunk_write_test.cc b/pw_blob_store/blob_store_chunk_write_test.cc
index ae9ef68..ccbd26d 100644
--- a/pw_blob_store/blob_store_chunk_write_test.cc
+++ b/pw_blob_store/blob_store_chunk_write_test.cc
@@ -59,7 +59,7 @@
snprintf(name, sizeof(name), "Blob%u", static_cast<unsigned>(chunk_size));
BlobStoreBuffer<kBufferSize> blob(
- name, &partition_, &checksum, kvs::TestKvs());
+ name, partition_, &checksum, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
BlobStore::BlobWriter writer(blob);
diff --git a/pw_blob_store/blob_store_deferred_write_test.cc b/pw_blob_store/blob_store_deferred_write_test.cc
index 9ccc581..4f3d581 100644
--- a/pw_blob_store/blob_store_deferred_write_test.cc
+++ b/pw_blob_store/blob_store_deferred_write_test.cc
@@ -62,7 +62,7 @@
snprintf(name, sizeof(name), "Blob%u", static_cast<unsigned>(chunk_size));
BlobStoreBuffer<kBufferSize> blob(
- name, &partition_, &checksum, kvs::TestKvs(), kWriteSize);
+ name, partition_, &checksum, kvs::TestKvs(), kWriteSize);
EXPECT_EQ(Status::OK, blob.Init());
BlobStore::DeferredWriter writer(blob);
diff --git a/pw_blob_store/blob_store_test.cc b/pw_blob_store/blob_store_test.cc
index 30cd64f..af1a717f 100644
--- a/pw_blob_store/blob_store_test.cc
+++ b/pw_blob_store/blob_store_test.cc
@@ -60,7 +60,7 @@
snprintf(name, sizeof(name), "TestBlobBlock");
BlobStoreBuffer<kBufferSize> blob(
- name, &partition_, &checksum, kvs::TestKvs());
+ name, partition_, &checksum, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
BlobStore::BlobWriter writer(blob);
@@ -85,7 +85,7 @@
VerifyFlash(flash_.buffer());
char name[16] = "TestBlobBlock";
- BlobStoreBuffer<16> blob(name, &partition_, &checksum, kvs::TestKvs());
+ BlobStoreBuffer<16> blob(name, partition_, &checksum, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
// Use reader to check for valid data.
@@ -142,12 +142,12 @@
};
TEST_F(BlobStoreTest, Init_Ok) {
- BlobStoreBuffer<256> blob("Blob_OK", &partition_, nullptr, kvs::TestKvs());
+ BlobStoreBuffer<256> blob("Blob_OK", partition_, nullptr, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
}
TEST_F(BlobStoreTest, MultipleErase) {
- BlobStoreBuffer<256> blob("Blob_OK", &partition_, nullptr, kvs::TestKvs());
+ BlobStoreBuffer<256> blob("Blob_OK", partition_, nullptr, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
BlobStore::BlobWriter writer(blob);
@@ -168,7 +168,7 @@
kvs::ChecksumCrc16 checksum;
char name[16] = "TestBlobBlock";
- BlobStoreBuffer<16> blob(name, &partition_, &checksum, kvs::TestKvs());
+ BlobStoreBuffer<16> blob(name, partition_, &checksum, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
BlobStore::BlobReader reader(blob);
ASSERT_EQ(Status::OK, reader.Open(kOffset));
@@ -192,7 +192,7 @@
kvs::ChecksumCrc16 checksum;
char name[16] = "TestBlobBlock";
- BlobStoreBuffer<16> blob(name, &partition_, &checksum, kvs::TestKvs());
+ BlobStoreBuffer<16> blob(name, partition_, &checksum, kvs::TestKvs());
EXPECT_EQ(Status::OK, blob.Init());
BlobStore::BlobReader reader(blob);
ASSERT_EQ(Status::INVALID_ARGUMENT, reader.Open(kOffset));
diff --git a/pw_blob_store/public/pw_blob_store/blob_store.h b/pw_blob_store/public/pw_blob_store/blob_store.h
index d28c9d7..1fd5263 100644
--- a/pw_blob_store/public/pw_blob_store/blob_store.h
+++ b/pw_blob_store/public/pw_blob_store/blob_store.h
@@ -261,7 +261,7 @@
// BlobStore
// name - Name of blob store, used for metadata KVS key
// partition - Flash partiton to use for this blob. Blob uses the entire
- // partition.
+ // partition for blob data.
// checksum_algo - Optional checksum for blob integrity checking. Use nullptr
// for no check.
// kvs - KVS used for storing blob metadata.
@@ -272,13 +272,13 @@
// size. Must be greater than or equal to flash write alignment, less than
// or equal to flash sector size.
BlobStore(std::string_view name,
- kvs::FlashPartition* partition,
+ kvs::FlashPartition& partition,
kvs::ChecksumAlgorithm* checksum_algo,
kvs::KeyValueStore& kvs,
ByteSpan write_buffer,
size_t flash_write_size_bytes)
: name_(name),
- partition_(*partition),
+ partition_(partition),
checksum_algo_(checksum_algo),
kvs_(kvs),
write_buffer_(write_buffer),
@@ -466,6 +466,7 @@
std::string_view name_;
kvs::FlashPartition& partition_;
+ // checksum_algo_ of nullptr indicates no checksum algorithm.
kvs::ChecksumAlgorithm* const checksum_algo_;
kvs::KeyValueStore& kvs_;
ByteSpan write_buffer_;
@@ -509,11 +510,26 @@
};
// Creates a BlobStore with the buffer of kBufferSizeBytes.
+//
+// kBufferSizeBytes - Size in bytes of write buffer to create.
+// name - Name of blob store, used for metadata KVS key
+// partition - Flash partiton to use for this blob. Blob uses the entire
+// partition for blob data.
+// checksum_algo - Optional checksum for blob integrity checking. Use nullptr
+// for no check.
+// kvs - KVS used for storing blob metadata.
+// write_buffer - Used for buffering writes. Needs to be at least
+// flash_write_size_bytes.
+// flash_write_size_bytes - Size in bytes to use for flash write operations.
+// This should be chosen to balance optimal write size and required buffer
+// size. Must be greater than or equal to flash write alignment, less than
+// or equal to flash sector size.
+
template <size_t kBufferSizeBytes>
class BlobStoreBuffer : public BlobStore {
public:
explicit BlobStoreBuffer(std::string_view name,
- kvs::FlashPartition* partition,
+ kvs::FlashPartition& partition,
kvs::ChecksumAlgorithm* checksum_algo,
kvs::KeyValueStore& kvs,
size_t flash_write_size_bytes = kBufferSizeBytes)