Skip to content

Commit b99a093

Browse files
committed
Merge #9346: Batch construct batches
ed58969 Batch construct batches (Pieter Wuille)
2 parents 8c7947e + ed58969 commit b99a093

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/dbwrapper.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,38 +53,41 @@ class CDBBatch
5353
const CDBWrapper &parent;
5454
leveldb::WriteBatch batch;
5555

56+
CDataStream ssKey;
57+
CDataStream ssValue;
58+
5659
public:
5760
/**
5861
* @param[in] _parent CDBWrapper that this batch is to be submitted to
5962
*/
60-
CDBBatch(const CDBWrapper &_parent) : parent(_parent) { };
63+
CDBBatch(const CDBWrapper &_parent) : parent(_parent), ssKey(SER_DISK, CLIENT_VERSION), ssValue(SER_DISK, CLIENT_VERSION) { };
6164

6265
template <typename K, typename V>
6366
void Write(const K& key, const V& value)
6467
{
65-
CDataStream ssKey(SER_DISK, CLIENT_VERSION);
6668
ssKey.reserve(DBWRAPPER_PREALLOC_KEY_SIZE);
6769
ssKey << key;
6870
leveldb::Slice slKey(&ssKey[0], ssKey.size());
6971

70-
CDataStream ssValue(SER_DISK, CLIENT_VERSION);
7172
ssValue.reserve(DBWRAPPER_PREALLOC_VALUE_SIZE);
7273
ssValue << value;
7374
ssValue.Xor(dbwrapper_private::GetObfuscateKey(parent));
7475
leveldb::Slice slValue(&ssValue[0], ssValue.size());
7576

7677
batch.Put(slKey, slValue);
78+
ssKey.clear();
79+
ssValue.clear();
7780
}
7881

7982
template <typename K>
8083
void Erase(const K& key)
8184
{
82-
CDataStream ssKey(SER_DISK, CLIENT_VERSION);
8385
ssKey.reserve(DBWRAPPER_PREALLOC_KEY_SIZE);
8486
ssKey << key;
8587
leveldb::Slice slKey(&ssKey[0], ssKey.size());
8688

8789
batch.Delete(slKey);
90+
ssKey.clear();
8891
}
8992
};
9093

0 commit comments

Comments
 (0)