summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-04-08 09:59:00 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-04-08 09:59:00 +0200
commit56ccfa23f91ac773c9a59f6ed47a62c4d217fab0 (patch)
tree4e744d06a310a7cb4741d9c74fecf082b6f76672
parent2da7bfbac166e0a34a35fcfaa9c5846449eed575 (diff)
downloadsink-56ccfa23f91ac773c9a59f6ed47a62c4d217fab0.tar.gz
sink-56ccfa23f91ac773c9a59f6ed47a62c4d217fab0.zip
Wait for all queues to drain in processAllMessages.
-rw-r--r--dummyresource/resourcefactory.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/dummyresource/resourcefactory.cpp b/dummyresource/resourcefactory.cpp
index 84c1abe..869ddbf 100644
--- a/dummyresource/resourcefactory.cpp
+++ b/dummyresource/resourcefactory.cpp
@@ -384,16 +384,22 @@ Async::Job<void> DummyResource::synchronizeWithSource(Akonadi2::Pipeline *pipeli
384 384
385Async::Job<void> DummyResource::processAllMessages() 385Async::Job<void> DummyResource::processAllMessages()
386{ 386{
387 //We have to wait for all items to be processed to ensure the synced items are available when a query gets executed.
388 //TODO: report errors while processing sync?
389 //TODO JOBAPI: A helper that waits for n events and then continues?
387 return Async::start<void>([this](Async::Future<void> &f) { 390 return Async::start<void>([this](Async::Future<void> &f) {
388 //We have to wait for all items to be processed to ensure the synced items are available when a query gets executed.
389 //TODO: report errors while processing sync?
390 //TODO: also check user-queue?
391 if (mSynchronizerQueue.isEmpty()) { 391 if (mSynchronizerQueue.isEmpty()) {
392 qDebug() << "synchronizer queue is empty";
393 f.setFinished(); 392 f.setFinished();
394 } else { 393 } else {
395 QObject::connect(&mSynchronizerQueue, &MessageQueue::drained, [&f]() { 394 QObject::connect(&mSynchronizerQueue, &MessageQueue::drained, [&f]() {
396 qDebug() << "synchronizer queue drained"; 395 f.setFinished();
396 });
397 }
398 }).then<void>([this](Async::Future<void> &f) {
399 if (mUserQueue.isEmpty()) {
400 f.setFinished();
401 } else {
402 QObject::connect(&mUserQueue, &MessageQueue::drained, [&f]() {
397 f.setFinished(); 403 f.setFinished();
398 }); 404 });
399 } 405 }