mirror of
https://github.com/sogou/workflow.git
synced 2026-10-29 11:36:47 +08:00
update WFDynamicTask
This commit is contained in:
@@ -95,6 +95,7 @@ using dns_callback_t = std::function<void (WFDNSTask *)>;
|
||||
using WFEmptyTask = WFGenericTask;
|
||||
|
||||
using WFDynamicTask = WFGenericTask;
|
||||
using dynamic_create_t = std::function<SubTask *(WFDynamicTask *)>;
|
||||
|
||||
class WFTaskFactory
|
||||
{
|
||||
@@ -223,7 +224,7 @@ public:
|
||||
return new WFEmptyTask;
|
||||
}
|
||||
|
||||
static WFDynamicTask *create_dynamic_task(std::function<SubTask *()> func);
|
||||
static WFDynamicTask *create_dynamic_task(dynamic_create_t create);
|
||||
};
|
||||
|
||||
template<class REQ, class RESP>
|
||||
|
||||
@@ -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<SubTask *()> create;
|
||||
std::function<SubTask *(WFDynamicTask *)> create;
|
||||
|
||||
public:
|
||||
__WFDynamicTask(std::function<SubTask *()>&& func) :
|
||||
__WFDynamicTask(std::function<SubTask *(WFDynamicTask *)>&& func) :
|
||||
create(std::move(func))
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
inline WFDynamicTask *
|
||||
WFTaskFactory::create_dynamic_task(std::function<SubTask *()> func)
|
||||
WFTaskFactory::create_dynamic_task(dynamic_create_t create)
|
||||
{
|
||||
return new __WFDynamicTask(std::move(func));
|
||||
return new __WFDynamicTask(std::move(create));
|
||||
}
|
||||
|
||||
/**********WFComplexClientTask**********/
|
||||
|
||||
Reference in New Issue
Block a user