From e8b2898efcd2225adc7b14329cc246d9b29f1fa6 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 15 Jan 2015 23:03:27 +0100 Subject: Fixed messageqeue and storage. Empty scan is not an error. --- common/messagequeue.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'common/messagequeue.cpp') diff --git a/common/messagequeue.cpp b/common/messagequeue.cpp index e1bde4b..99a0112 100644 --- a/common/messagequeue.cpp +++ b/common/messagequeue.cpp @@ -21,8 +21,13 @@ void MessageQueue::enqueue(void const *msg, size_t size) void MessageQueue::dequeue(const std::function)> &resultHandler, const std::function &errorHandler) { - mStorage.scan("", 0, [this, resultHandler](void *keyPtr, int keySize, void *valuePtr, int valueSize) -> bool { - const std::string key(static_cast(keyPtr), keySize); + bool readValue = false; + mStorage.scan("", 0, [this, resultHandler, &readValue](void *keyPtr, int keySize, void *valuePtr, int valueSize) -> bool { + const auto key = QByteArray::fromRawData(static_cast(keyPtr), keySize); + if (key.startsWith("__internal")) { + return true; + } + readValue = true; resultHandler(valuePtr, valueSize, [this, key](bool success) { if (success) { mStorage.remove(key.data(), key.size()); @@ -37,16 +42,21 @@ void MessageQueue::dequeue(const std::function bool { - const QByteArray key(static_cast(keyPtr), keySize); + const auto key = QByteArray::fromRawData(static_cast(keyPtr), keySize); if (!key.startsWith("__internal")) { count++; + return false; } + return true; }); return count == 0; } -- cgit v1.2.3