diff options
-rw-r--r-- | common/storage.h | 6 | ||||
-rw-r--r-- | 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: | |||
85 | */ | 85 | */ |
86 | bool write(const QByteArray &key, const QByteArray &value, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); | 86 | bool write(const QByteArray &key, const QByteArray &value, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
87 | 87 | ||
88 | // TODO: change resultHandlers and errorHandlers to take size_t instead | ||
89 | // of QByteArray for keys | 88 | // of QByteArray for keys |
90 | bool write(const size_t key, const QByteArray &value, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); | 89 | bool write(const size_t key, const QByteArray &value, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
91 | 90 | ||
@@ -127,6 +126,9 @@ public: | |||
127 | void findLatest(const QByteArray &uid, const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, | 126 | void findLatest(const QByteArray &uid, const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, |
128 | const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()) const; | 127 | const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()) const; |
129 | 128 | ||
129 | void findLatest(size_t key, const std::function<void(size_t key, const QByteArray &value)> &resultHandler, | ||
130 | const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()) const; | ||
131 | |||
130 | /** | 132 | /** |
131 | * Finds all the keys and values whose keys are in a given range | 133 | * Finds all the keys and values whose keys are in a given range |
132 | * (inclusive). | 134 | * (inclusive). |
@@ -137,7 +139,7 @@ public: | |||
137 | std::function<void(const DataStore::Error &error)>()) const; | 139 | std::function<void(const DataStore::Error &error)>()) const; |
138 | 140 | ||
139 | int findAllInRange(const size_t lowerBound, const size_t upperBound, | 141 | int findAllInRange(const size_t lowerBound, const size_t upperBound, |
140 | const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, | 142 | const std::function<void(size_t key, const QByteArray &value)> &resultHandler, |
141 | const std::function<void(const DataStore::Error &error)> &errorHandler = {}) const; | 143 | const std::function<void(const DataStore::Error &error)> &errorHandler = {}) const; |
142 | 144 | ||
143 | /** | 145 | /** |
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<bool | |||
573 | return numberOfRetrievedValues; | 573 | return numberOfRetrievedValues; |
574 | } | 574 | } |
575 | 575 | ||
576 | |||
577 | void DataStore::NamedDatabase::findLatest(size_t key, | ||
578 | const std::function<void(size_t key, const QByteArray &value)> &resultHandler, | ||
579 | const std::function<void(const DataStore::Error &error)> &errorHandler) const | ||
580 | { | ||
581 | auto baKey = sizeTToByteArray(key); | ||
582 | return findLatest(baKey, | ||
583 | [&resultHandler](const QByteArray &key, const QByteArray &value) { | ||
584 | size_t integerKey = byteArrayToSizeT(value); | ||
585 | resultHandler(integerKey, value); | ||
586 | }, | ||
587 | errorHandler); | ||
588 | } | ||
589 | |||
576 | void DataStore::NamedDatabase::findLatest(const QByteArray &k, const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, | 590 | void DataStore::NamedDatabase::findLatest(const QByteArray &k, const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, |
577 | const std::function<void(const DataStore::Error &error)> &errorHandler) const | 591 | const std::function<void(const DataStore::Error &error)> &errorHandler) const |
578 | { | 592 | { |
@@ -647,12 +661,17 @@ void DataStore::NamedDatabase::findLatest(const QByteArray &k, const std::functi | |||
647 | } | 661 | } |
648 | 662 | ||
649 | int DataStore::NamedDatabase::findAllInRange(const size_t lowerBound, const size_t upperBound, | 663 | int DataStore::NamedDatabase::findAllInRange(const size_t lowerBound, const size_t upperBound, |
650 | const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, | 664 | const std::function<void(size_t key, const QByteArray &value)> &resultHandler, |
651 | const std::function<void(const DataStore::Error &error)> &errorHandler) const | 665 | const std::function<void(const DataStore::Error &error)> &errorHandler) const |
652 | { | 666 | { |
653 | auto baLowerBound = sizeTToByteArray(lowerBound); | 667 | auto baLowerBound = sizeTToByteArray(lowerBound); |
654 | auto baUpperBound = sizeTToByteArray(upperBound); | 668 | auto baUpperBound = sizeTToByteArray(upperBound); |
655 | return findAllInRange(baLowerBound, baUpperBound, resultHandler, errorHandler); | 669 | return findAllInRange(baLowerBound, baUpperBound, |
670 | [&resultHandler](const QByteArray &key, const QByteArray &value) { | ||
671 | size_t integerKey = byteArrayToSizeT(value); | ||
672 | resultHandler(integerKey, value); | ||
673 | }, | ||
674 | errorHandler); | ||
656 | } | 675 | } |
657 | 676 | ||
658 | int DataStore::NamedDatabase::findAllInRange(const QByteArray &lowerBound, const QByteArray &upperBound, | 677 | int DataStore::NamedDatabase::findAllInRange(const QByteArray &lowerBound, const QByteArray &upperBound, |