From caeeb47c019fd143acc2e65d42f6aa6c24e60b45 Mon Sep 17 00:00:00 2001 From: XieHan Date: Mon, 23 Nov 2020 00:08:20 +0800 Subject: [PATCH] update WFDynamicTask --- src/factory/WFTaskFactory.h | 3 ++- src/factory/WFTaskFactory.inl | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/factory/WFTaskFactory.h b/src/factory/WFTaskFactory.h index 166303ef..6f702f0d 100644 --- a/src/factory/WFTaskFactory.h +++ b/src/factory/WFTaskFactory.h @@ -95,6 +95,7 @@ using dns_callback_t = std::function; using WFEmptyTask = WFGenericTask; using WFDynamicTask = WFGenericTask; +using dynamic_create_t = std::function; class WFTaskFactory { @@ -223,7 +224,7 @@ public: return new WFEmptyTask; } - static WFDynamicTask *create_dynamic_task(std::function func); + static WFDynamicTask *create_dynamic_task(dynamic_create_t create); }; template diff --git a/src/factory/WFTaskFactory.inl b/src/factory/WFTaskFactory.inl index 39ebdc54..16e6a465 100644 --- a/src/factory/WFTaskFactory.inl +++ b/src/factory/WFTaskFactory.inl @@ -111,24 +111,24 @@ class __WFDynamicTask : public WFDynamicTask protected: virtual void dispatch() { - series_of(this)->push_front(this->create()); + series_of(this)->push_front(this->create(this)); this->WFDynamicTask::dispatch(); } protected: - std::function create; + std::function create; public: - __WFDynamicTask(std::function&& func) : + __WFDynamicTask(std::function&& func) : create(std::move(func)) { } }; inline WFDynamicTask * -WFTaskFactory::create_dynamic_task(std::function func) +WFTaskFactory::create_dynamic_task(dynamic_create_t create) { - return new __WFDynamicTask(std::move(func)); + return new __WFDynamicTask(std::move(create)); } /**********WFComplexClientTask**********/