From ffef7c0341ea42aba550fc6db432da3a334fd7f1 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 11 Aug 2015 23:58:06 +0200 Subject: waitForDrained to avoid duplication --- common/genericresource.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'common/genericresource.cpp') diff --git a/common/genericresource.cpp b/common/genericresource.cpp index 4dd73b3..734c1b5 100644 --- a/common/genericresource.cpp +++ b/common/genericresource.cpp @@ -198,27 +198,26 @@ void GenericResource::processCommand(int commandId, const QByteArray &data) enqueueCommand(mUserQueue, commandId, data); } +static void waitForDrained(KAsync::Future &f, MessageQueue &queue) +{ + if (queue.isEmpty()) { + f.setFinished(); + } else { + QObject::connect(&queue, &MessageQueue::drained, [&f]() { + f.setFinished(); + }); + } +}; + KAsync::Job GenericResource::processAllMessages() { //We have to wait for all items to be processed to ensure the synced items are available when a query gets executed. //TODO: report errors while processing sync? //TODO JOBAPI: A helper that waits for n events and then continues? return KAsync::start([this](KAsync::Future &f) { - if (mSynchronizerQueue.isEmpty()) { - f.setFinished(); - } else { - QObject::connect(&mSynchronizerQueue, &MessageQueue::drained, [&f]() { - f.setFinished(); - }); - } + waitForDrained(f, mSynchronizerQueue); }).then([this](KAsync::Future &f) { - if (mUserQueue.isEmpty()) { - f.setFinished(); - } else { - QObject::connect(&mUserQueue, &MessageQueue::drained, [&f]() { - f.setFinished(); - }); - } + waitForDrained(f, mUserQueue); }); } -- cgit v1.2.3