diff options
Diffstat (limited to 'async/src')
-rw-r--r-- | async/src/async.h | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/async/src/async.h b/async/src/async.h index 9a2f721..1f44f10 100644 --- a/async/src/async.h +++ b/async/src/async.h | |||
@@ -102,7 +102,7 @@ protected: | |||
102 | 102 | ||
103 | void exec(); | 103 | void exec(); |
104 | 104 | ||
105 | std::function<void(const In& ..., Async::Future<Out> &)> mFunc; | 105 | //std::function<void(const In& ..., Async::Future<Out> &)> mFunc; |
106 | std::function<void(int, const QString &)> mErrorFunc; | 106 | std::function<void(int, const QString &)> mErrorFunc; |
107 | Async::Future<PrevOut> *mPrevFuture; | 107 | Async::Future<PrevOut> *mPrevFuture; |
108 | }; | 108 | }; |
@@ -113,6 +113,8 @@ class ThenExecutor: public Executor<typename detail::prevOut<In ...>::type, Out, | |||
113 | public: | 113 | public: |
114 | ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent); | 114 | ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent); |
115 | void previousFutureReady(); | 115 | void previousFutureReady(); |
116 | private: | ||
117 | ThenTask<Out, In ...> mFunc; | ||
116 | }; | 118 | }; |
117 | 119 | ||
118 | template<typename PrevOut, typename Out, typename In> | 120 | template<typename PrevOut, typename Out, typename In> |
@@ -121,8 +123,8 @@ class EachExecutor : public Executor<PrevOut, Out, In> | |||
121 | public: | 123 | public: |
122 | EachExecutor(EachTask<Out, In> each, ErrorHandler errorHandler, const ExecutorBasePtr &parent); | 124 | EachExecutor(EachTask<Out, In> each, ErrorHandler errorHandler, const ExecutorBasePtr &parent); |
123 | void previousFutureReady(); | 125 | void previousFutureReady(); |
124 | |||
125 | private: | 126 | private: |
127 | EachTask<Out, In> mFunc; | ||
126 | QVector<Async::FutureWatcher<PrevOut>*> mFutureWatchers; | 128 | QVector<Async::FutureWatcher<PrevOut>*> mFutureWatchers; |
127 | }; | 129 | }; |
128 | 130 | ||
@@ -131,6 +133,8 @@ class ReduceExecutor : public ThenExecutor<Out, In> | |||
131 | { | 133 | { |
132 | public: | 134 | public: |
133 | ReduceExecutor(ReduceTask<Out, In> reduce, ErrorHandler errorHandler, const ExecutorBasePtr &parent); | 135 | ReduceExecutor(ReduceTask<Out, In> reduce, ErrorHandler errorHandler, const ExecutorBasePtr &parent); |
136 | private: | ||
137 | ReduceTask<Out, In> mFunc; | ||
134 | }; | 138 | }; |
135 | 139 | ||
136 | template<typename Out, typename ... In> | 140 | template<typename Out, typename ... In> |
@@ -139,7 +143,7 @@ class SyncThenExecutor : public Executor<typename detail::prevOut<In ...>::type, | |||
139 | public: | 143 | public: |
140 | SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent); | 144 | SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent); |
141 | void previousFutureReady(); | 145 | void previousFutureReady(); |
142 | protected: | 146 | private: |
143 | SyncThenTask<Out, In ...> mFunc; | 147 | SyncThenTask<Out, In ...> mFunc; |
144 | }; | 148 | }; |
145 | 149 | ||
@@ -148,6 +152,8 @@ class SyncReduceExecutor : public SyncThenExecutor<Out, In> | |||
148 | { | 152 | { |
149 | public: | 153 | public: |
150 | SyncReduceExecutor(SyncReduceTask<Out, In> reduce, ErrorHandler errorHandler, const ExecutorBasePtr &parent); | 154 | SyncReduceExecutor(SyncReduceTask<Out, In> reduce, ErrorHandler errorHandler, const ExecutorBasePtr &parent); |
155 | private: | ||
156 | SyncReduceTask<Out, In> mFunc; | ||
151 | }; | 157 | }; |
152 | 158 | ||
153 | template<typename PrevOut, typename Out, typename In> | 159 | template<typename PrevOut, typename Out, typename In> |
@@ -156,7 +162,7 @@ class SyncEachExecutor : public Executor<PrevOut, Out, In> | |||
156 | public: | 162 | public: |
157 | SyncEachExecutor(SyncEachTask<Out, In> each, ErrorHandler errorHandler, const ExecutorBasePtr &parent); | 163 | SyncEachExecutor(SyncEachTask<Out, In> each, ErrorHandler errorHandler, const ExecutorBasePtr &parent); |
158 | void previousFutureReady(); | 164 | void previousFutureReady(); |
159 | protected: | 165 | private: |
160 | SyncEachTask<Out, In> mFunc; | 166 | SyncEachTask<Out, In> mFunc; |
161 | }; | 167 | }; |
162 | 168 | ||
@@ -194,6 +200,7 @@ Job<Out> null(); | |||
194 | template<typename Out> | 200 | template<typename Out> |
195 | Job<Out> error(int errorCode = 1, const QString &errorMessage = QString()); | 201 | Job<Out> error(int errorCode = 1, const QString &errorMessage = QString()); |
196 | 202 | ||
203 | |||
197 | class JobBase | 204 | class JobBase |
198 | { | 205 | { |
199 | template<typename Out, typename ... In> | 206 | template<typename Out, typename ... In> |
@@ -353,13 +360,15 @@ namespace Async { | |||
353 | template<typename Out> | 360 | template<typename Out> |
354 | Job<Out> start(ThenTask<Out> func) | 361 | Job<Out> start(ThenTask<Out> func) |
355 | { | 362 | { |
356 | return Job<Out>(Private::ExecutorBasePtr(new Private::ThenExecutor<Out>(func, ErrorHandler(), Private::ExecutorBasePtr()))); | 363 | return Job<Out>(Private::ExecutorBasePtr( |
364 | new Private::ThenExecutor<Out>(func, ErrorHandler(), Private::ExecutorBasePtr()))); | ||
357 | } | 365 | } |
358 | 366 | ||
359 | template<typename Out> | 367 | template<typename Out> |
360 | Job<Out> start(SyncThenTask<Out> func) | 368 | Job<Out> start(SyncThenTask<Out> func) |
361 | { | 369 | { |
362 | return Job<Out>(Private::ExecutorBasePtr(new Private::SyncThenExecutor<Out>(func, ErrorHandler(), Private::ExecutorBasePtr()))); | 370 | return Job<Out>(Private::ExecutorBasePtr( |
371 | new Private::SyncThenExecutor<Out>(func, ErrorHandler(), Private::ExecutorBasePtr()))); | ||
363 | } | 372 | } |
364 | 373 | ||
365 | template<typename Out> | 374 | template<typename Out> |
@@ -437,8 +446,8 @@ void Executor<PrevOut, Out, In ...>::exec() | |||
437 | template<typename Out, typename ... In> | 446 | template<typename Out, typename ... In> |
438 | ThenExecutor<Out, In ...>::ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler error, const ExecutorBasePtr &parent) | 447 | ThenExecutor<Out, In ...>::ThenExecutor(ThenTask<Out, In ...> then, ErrorHandler error, const ExecutorBasePtr &parent) |
439 | : Executor<typename detail::prevOut<In ...>::type, Out, In ...>(error, parent) | 448 | : Executor<typename detail::prevOut<In ...>::type, Out, In ...>(error, parent) |
449 | , mFunc(then) | ||
440 | { | 450 | { |
441 | this->mFunc = then; | ||
442 | } | 451 | } |
443 | 452 | ||
444 | template<typename Out, typename ... In> | 453 | template<typename Out, typename ... In> |
@@ -455,8 +464,8 @@ void ThenExecutor<Out, In ...>::previousFutureReady() | |||
455 | template<typename PrevOut, typename Out, typename In> | 464 | template<typename PrevOut, typename Out, typename In> |
456 | EachExecutor<PrevOut, Out, In>::EachExecutor(EachTask<Out, In> each, ErrorHandler error, const ExecutorBasePtr &parent) | 465 | EachExecutor<PrevOut, Out, In>::EachExecutor(EachTask<Out, In> each, ErrorHandler error, const ExecutorBasePtr &parent) |
457 | : Executor<PrevOut, Out, In>(error, parent) | 466 | : Executor<PrevOut, Out, In>(error, parent) |
467 | , mFunc(each) | ||
458 | { | 468 | { |
459 | this->mFunc = each; | ||
460 | } | 469 | } |
461 | 470 | ||
462 | template<typename PrevOut, typename Out, typename In> | 471 | template<typename PrevOut, typename Out, typename In> |
@@ -499,8 +508,8 @@ ReduceExecutor<Out, In>::ReduceExecutor(ReduceTask<Out, In> reduce, ErrorHandler | |||
499 | template<typename Out, typename ... In> | 508 | template<typename Out, typename ... In> |
500 | SyncThenExecutor<Out, In ...>::SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent) | 509 | SyncThenExecutor<Out, In ...>::SyncThenExecutor(SyncThenTask<Out, In ...> then, ErrorHandler errorHandler, const ExecutorBasePtr &parent) |
501 | : Executor<typename detail::prevOut<In ...>::type, Out, In ...>(errorHandler, parent) | 510 | : Executor<typename detail::prevOut<In ...>::type, Out, In ...>(errorHandler, parent) |
511 | , mFunc(then) | ||
502 | { | 512 | { |
503 | this->mFunc = then; | ||
504 | } | 513 | } |
505 | 514 | ||
506 | template<typename Out, typename ... In> | 515 | template<typename Out, typename ... In> |
@@ -518,8 +527,8 @@ void SyncThenExecutor<Out, In ...>::previousFutureReady() | |||
518 | template<typename PrevOut, typename Out, typename In> | 527 | template<typename PrevOut, typename Out, typename In> |
519 | SyncEachExecutor<PrevOut, Out, In>::SyncEachExecutor(SyncEachTask<Out, In> each, ErrorHandler errorHandler, const ExecutorBasePtr &parent) | 528 | SyncEachExecutor<PrevOut, Out, In>::SyncEachExecutor(SyncEachTask<Out, In> each, ErrorHandler errorHandler, const ExecutorBasePtr &parent) |
520 | : Executor<PrevOut, Out, In>(errorHandler, parent) | 529 | : Executor<PrevOut, Out, In>(errorHandler, parent) |
530 | , mFunc(each) | ||
521 | { | 531 | { |
522 | this->mFunc = each; | ||
523 | } | 532 | } |
524 | 533 | ||
525 | template<typename PrevOut, typename Out, typename In> | 534 | template<typename PrevOut, typename Out, typename In> |