summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dummyresource/resourcefactory.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/dummyresource/resourcefactory.cpp b/dummyresource/resourcefactory.cpp
index d2b0c14..c0395b7 100644
--- a/dummyresource/resourcefactory.cpp
+++ b/dummyresource/resourcefactory.cpp
@@ -210,26 +210,17 @@ private slots:
210 210
211 Async::Job<void> processPipeline() 211 Async::Job<void> processPipeline()
212 { 212 {
213 auto job = Async::start<void>([this](Async::Future<void> &future) { 213 //Go through all message queues
214 //An async for loop. Go through all message queues 214 auto it = QSharedPointer<QListIterator<MessageQueue*> >::create(mCommandQueues);
215 //TODO: replace by Async::foreach 215 return Async::dowhile<void>(
216 auto it = QSharedPointer<QListIterator<MessageQueue*> >::create(mCommandQueues); 216 [it]() { return it->hasNext(); },
217 asyncWhile([&, it](std::function<void(bool)> forCallback) { 217 [it, this](Async::Future<void> &future) {
218 if (it->hasNext()) { 218 auto queue = it->next();
219 auto queue = it->next(); 219 processQueue(queue).then<void>([&future]() {
220 processQueue(queue).then<void>([forCallback]() { 220 future.setFinished();
221 forCallback(false); 221 }).exec();
222 }).exec(); 222 }
223 } else { 223 );
224 forCallback(true);
225 }
226 },
227 [&future]() { //while complete
228 future.setFinished();
229 });
230
231 });
232 return job;
233 } 224 }
234 225
235private: 226private: