I agree that spans are better when all that is needed is to pass down data and size. I'll leave this diff here up for grabs:
diff --git a/src/wallet/bdb.cpp b/src/wallet/bdb.cpp
index 125bf004e4..46d12546c7 100644
--- a/src/wallet/bdb.cpp
+++ b/src/wallet/bdb.cpp
@@ -804,7 +804,7 @@ std::string BerkeleyDatabaseVersion()
return DbEnv::version(nullptr, nullptr, nullptr);
}
-bool BerkeleyBatch::ReadKey(CDataStream& key, CDataStream& value)
+bool BerkeleyBatch::ReadKey(Span<char> key, CDataStream& value)
{
if (!pdb)
return false;
@@ -822,7 +822,7 @@ bool BerkeleyBatch::ReadKey(CDataStream& key, CDataStream& value)
return false;
}
-bool BerkeleyBatch::WriteKey(CDataStream& key, CDataStream& value, bool overwrite)
+bool BerkeleyBatch::WriteKey(Span<char> key, Span<char> value, bool overwrite)
{
if (!pdb)
return true;
@@ -840,7 +840,7 @@ bool BerkeleyBatch::WriteKey(CDataStream& key, CDataStream& value, bool overwrit
return (ret == 0);
}
-bool BerkeleyBatch::EraseKey(CDataStream& key)
+bool BerkeleyBatch::EraseKey(Span<char> key)
{
if (!pdb)
return false;
@@ -855,7 +855,7 @@ bool BerkeleyBatch::EraseKey(CDataStream& key)
return (ret == 0 || ret == DB_NOTFOUND);
}
-bool BerkeleyBatch::HasKey(CDataStream& key)
+bool BerkeleyBatch::HasKey(Span<char> key)
{
if (!pdb)
return false;
diff --git a/src/wallet/bdb.h b/src/wallet/bdb.h
index 1e717b95be..f5fa2da76a 100644
--- a/src/wallet/bdb.h
+++ b/src/wallet/bdb.h
@@ -208,10 +208,10 @@ class BerkeleyBatch
};
private:
- bool ReadKey(CDataStream& key, CDataStream& value);
- bool WriteKey(CDataStream& key, CDataStream& value, bool overwrite=true);
- bool EraseKey(CDataStream& key);
- bool HasKey(CDataStream& key);
+ bool ReadKey(Span<char> key, CDataStream& value);
+ bool WriteKey(Span<char> key, Span<char> value, bool overwrite = true);
+ bool EraseKey(Span<char> key);
+ bool HasKey(Span<char> key);
protected:
Db* pdb;