feat.增加任务回调taskid字段

This commit is contained in:
MistEO
2022-03-30 01:42:05 +08:00
parent 95379bd281
commit c60c09afe1
7 changed files with 39 additions and 12 deletions

View File

@@ -113,6 +113,7 @@ Todo
```jsonc
{
"taskchain": string, // 当前的任务链
"taskid": int, // 当前任务 TaskId
"uuid": string // 设备唯一码
}
```
@@ -128,6 +129,7 @@ Todo
"subtask": string, // 子任务名
"class": string, // 子任务符号名
"taskchain": string, // 当前任务链
"taskid": int, // 当前任务 TaskId
"details": object, // 详情
"uuid": string // 设备唯一码
}

View File

@@ -80,6 +80,12 @@ AbstractTask& asst::AbstractTask::set_enable(bool enable) noexcept
return *this;
}
AbstractTask& asst::AbstractTask::set_task_id(int task_id) noexcept
{
m_task_id = task_id;
return *this;
}
void asst::AbstractTask::clear_plugin() noexcept
{
m_plugins.clear();
@@ -103,6 +109,7 @@ json::value asst::AbstractTask::basic_info() const
m_basic_info_cache = json::object{
{ "taskchain", m_task_chain },
{ "taskid", m_task_id },
{ "class", class_name },
{ "subtask", task_name },
{ "details", json::object() }
@@ -165,6 +172,7 @@ void asst::AbstractTask::callback(AsstMsg msg, const json::value& detail)
for (TaskPluginPtr plugin : m_plugins) {
plugin->set_exit_flag(m_exit_flag);
plugin->set_ctrler(m_ctrler);
plugin->set_task_id(m_task_id);
plugin->set_status(m_status);
plugin->set_task_ptr(this);

View File

@@ -31,11 +31,12 @@ namespace asst
virtual bool run();
AbstractTask& set_exit_flag(bool* exit_flag) noexcept;
AbstractTask& set_retry_times(int times) noexcept;
AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept;
AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept;
AbstractTask& set_enable(bool enable) noexcept;
virtual AbstractTask& set_exit_flag(bool* exit_flag) noexcept;
virtual AbstractTask& set_retry_times(int times) noexcept;
virtual AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept;
virtual AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept;
virtual AbstractTask& set_enable(bool enable) noexcept;
virtual AbstractTask& set_task_id(int task_id) noexcept;
template<typename PluginType>
std::shared_ptr<PluginType> regiseter_plugin()
@@ -51,6 +52,7 @@ namespace asst
bool get_enable() const noexcept { return m_enable; }
const std::string& get_task_chain() const noexcept { return m_task_chain; }
int get_task_id() const noexcept { return m_task_id; }
virtual json::value basic_info() const;
constexpr static int RetryTimesDefault = 20;
@@ -74,6 +76,7 @@ namespace asst
int m_retry_times = RetryTimesDefault;
mutable json::value m_basic_info_cache;
int m_task_id = 0;
std::set<TaskPluginPtr> m_plugins;
std::shared_ptr<Controller> m_ctrler = nullptr;
std::shared_ptr<RuntimeStatus> m_status = nullptr;

View File

@@ -129,6 +129,7 @@ asst::Assistant::TaskId asst::Assistant::append_task(const std::string& type, co
std::unique_lock<std::mutex> lock(m_mutex);
++m_task_id;
ptr->set_task_id(m_task_id);
m_tasks_list.emplace_back(m_task_id, ptr);
return m_task_id;
}
@@ -225,7 +226,8 @@ void Assistant::working_proc()
lock.unlock();
json::value callback_json = json::object{
{ "taskchain", task_ptr->get_task_chain() }
{ "taskchain", task_ptr->get_task_chain() },
{ "taskid", task_ptr->get_task_id() }
};
task_callback(AsstMsg::TaskChainStart, callback_json, this);

View File

@@ -112,7 +112,8 @@ bool asst::AutoRecruitTask::calc_and_recruit()
.set_retry_times(m_retry_times)
.set_exit_flag(m_exit_flag)
.set_ctrler(m_ctrler)
.set_status(m_status);
.set_status(m_status)
.set_task_id(m_task_id);
// 识别错误,放弃这个公招位,直接返回
if (!recruit_task.run()) {

View File

@@ -25,7 +25,8 @@ bool asst::PackageTask::run()
task_ptr->set_exit_flag(m_exit_flag)
.set_ctrler(m_ctrler)
.set_status(m_status);
.set_status(m_status)
.set_task_id(m_task_id);
if (!task_ptr->run()) {
return false;
@@ -73,3 +74,12 @@ asst::AbstractTask& asst::PackageTask::set_status(std::shared_ptr<RuntimeStatus>
}
return *this;
}
asst::AbstractTask& asst::PackageTask::set_task_id(int task_id) noexcept
{
AbstractTask::set_task_id(task_id);
for (auto&& sub : m_subtasks) {
sub->set_task_id(task_id);
}
return *this;
}

View File

@@ -22,10 +22,11 @@ namespace asst
virtual bool set_params([[maybe_unused]] const json::value& params) { return true; }
virtual AbstractTask& set_exit_flag(bool* exit_flag) noexcept;
virtual AbstractTask& set_retry_times(int times) noexcept;
virtual AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept;
virtual AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept;
virtual AbstractTask& set_exit_flag(bool* exit_flag) noexcept override;
virtual AbstractTask& set_retry_times(int times) noexcept override;
virtual AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept override;
virtual AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept override;
virtual AbstractTask& set_task_id(int task_id) noexcept override;
protected:
virtual bool _run() override { return true; }