diff --git a/src/factory/Workflow.cc b/src/factory/Workflow.cc index 7431317d..63ffbb53 100644 --- a/src/factory/Workflow.cc +++ b/src/factory/Workflow.cc @@ -25,9 +25,9 @@ #include "Workflow.h" SeriesWork::SeriesWork(SubTask *first, series_callback_t&& cb) : - queue(new SubTask *[4]), callback(std::move(cb)) { + this->queue = new SubTask *[4]; this->queue_size = 4; this->front = 0; this->back = 0; diff --git a/src/factory/Workflow.h b/src/factory/Workflow.h index f7cdb7cf..b16b9aaa 100644 --- a/src/factory/Workflow.h +++ b/src/factory/Workflow.h @@ -114,6 +114,10 @@ public: this->last = last; } +protected: + void *context; + series_callback_t callback; + private: SubTask *pop_task(); void expand_queue(); @@ -128,13 +132,11 @@ private: int back; bool in_parallel; bool canceled; - void *context; std::mutex mutex; - series_callback_t callback; -private: +protected: SeriesWork(SubTask *first, series_callback_t&& callback); - ~SeriesWork() { delete []this->queue; } + virtual ~SeriesWork() { delete []this->queue; } friend class ParallelWork; friend class Workflow; }; @@ -230,9 +232,13 @@ public: this->callback = std::move(callback); } -private: +protected: virtual SubTask *done(); +protected: + void *context; + parallel_callback_t callback; + private: void expand_buf(); void dismiss_recursive(); @@ -240,10 +246,8 @@ private: private: size_t buf_size; SeriesWork **all_series; - void *context; - parallel_callback_t callback; -private: +protected: ParallelWork(parallel_callback_t&& callback); ParallelWork(SeriesWork *const all_series[], size_t n, parallel_callback_t&& callback);