From 191730c624aae5fa7831fe900b98624b2ac1f1d7 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Tue, 21 Aug 2018 14:00:21 +0200 Subject: resultHandler take size_t as argument for involved storage functions --- common/storage.h | 6 ++++-- common/storage_lmdb.cpp | 23 +++++++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/common/storage.h b/common/storage.h index 53fcf41..4535ae3 100644 --- a/common/storage.h +++ b/common/storage.h @@ -85,7 +85,6 @@ public: */ bool write(const QByteArray &key, const QByteArray &value, const std::function &errorHandler = std::function()); - // TODO: change resultHandlers and errorHandlers to take size_t instead // of QByteArray for keys bool write(const size_t key, const QByteArray &value, const std::function &errorHandler = std::function()); @@ -127,6 +126,9 @@ public: void findLatest(const QByteArray &uid, const std::function &resultHandler, const std::function &errorHandler = std::function()) const; + void findLatest(size_t key, const std::function &resultHandler, + const std::function &errorHandler = std::function()) const; + /** * Finds all the keys and values whose keys are in a given range * (inclusive). @@ -137,7 +139,7 @@ public: std::function()) const; int findAllInRange(const size_t lowerBound, const size_t upperBound, - const std::function &resultHandler, + const std::function &resultHandler, const std::function &errorHandler = {}) const; /** diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp index 981d4ef..6afa1a8 100644 --- a/common/storage_lmdb.cpp +++ b/common/storage_lmdb.cpp @@ -573,6 +573,20 @@ int DataStore::NamedDatabase::scan(const QByteArray &k, const std::function &resultHandler, + const std::function &errorHandler) const +{ + auto baKey = sizeTToByteArray(key); + return findLatest(baKey, + [&resultHandler](const QByteArray &key, const QByteArray &value) { + size_t integerKey = byteArrayToSizeT(value); + resultHandler(integerKey, value); + }, + errorHandler); +} + void DataStore::NamedDatabase::findLatest(const QByteArray &k, const std::function &resultHandler, const std::function &errorHandler) const { @@ -647,12 +661,17 @@ void DataStore::NamedDatabase::findLatest(const QByteArray &k, const std::functi } int DataStore::NamedDatabase::findAllInRange(const size_t lowerBound, const size_t upperBound, - const std::function &resultHandler, + const std::function &resultHandler, const std::function &errorHandler) const { auto baLowerBound = sizeTToByteArray(lowerBound); auto baUpperBound = sizeTToByteArray(upperBound); - return findAllInRange(baLowerBound, baUpperBound, resultHandler, errorHandler); + return findAllInRange(baLowerBound, baUpperBound, + [&resultHandler](const QByteArray &key, const QByteArray &value) { + size_t integerKey = byteArrayToSizeT(value); + resultHandler(integerKey, value); + }, + errorHandler); } int DataStore::NamedDatabase::findAllInRange(const QByteArray &lowerBound, const QByteArray &upperBound, -- cgit v1.2.3