diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-08 09:59:00 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-08 09:59:00 +0200 |
commit | 56ccfa23f91ac773c9a59f6ed47a62c4d217fab0 (patch) | |
tree | 4e744d06a310a7cb4741d9c74fecf082b6f76672 | |
parent | 2da7bfbac166e0a34a35fcfaa9c5846449eed575 (diff) | |
download | sink-56ccfa23f91ac773c9a59f6ed47a62c4d217fab0.tar.gz sink-56ccfa23f91ac773c9a59f6ed47a62c4d217fab0.zip |
Wait for all queues to drain in processAllMessages.
-rw-r--r-- | dummyresource/resourcefactory.cpp | 16 |
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 | ||
385 | Async::Job<void> DummyResource::processAllMessages() | 385 | Async::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 | } |