diff options
-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 | } |