refactor.初步完成回调消息的重构

This commit is contained in:
MistEO
2022-01-08 01:00:56 +08:00
parent 7870f6c489
commit 5cb898ab2e
19 changed files with 167 additions and 246 deletions

View File

@@ -22,8 +22,10 @@ AbstractTask::AbstractTask(AsstCallback callback, void* callback_arg)
bool asst::AbstractTask::run()
{
m_callback(AsstMsg::SubTaskStart, basic_info(), m_callback_arg);
for (m_cur_retry = 0; m_cur_retry < m_retry_times; ++m_cur_retry) {
if (_run()) {
m_callback(AsstMsg::SubTaskCompleted, basic_info(), m_callback_arg);
return true;
}
if (need_exit()) {
@@ -33,12 +35,25 @@ bool asst::AbstractTask::run()
sleep(delay);
if (!on_run_fails()) {
m_callback(AsstMsg::SubTaskError, basic_info(), m_callback_arg);
return false;
}
}
m_callback(AsstMsg::SubTaskError, basic_info(), m_callback_arg);
return false;
}
json::value asst::AbstractTask::basic_info() const
{
return json::object{
{ "taskchain", m_task_chain },
{ "class", typeid(*this).name() },
{ "details", json::object() }
//{ "CurRetryTimes", m_cur_retry },
//{ "MaxRetryTimes", m_retry_times }
};
}
bool AbstractTask::sleep(unsigned millisecond)
{
if (need_exit()) {
@@ -50,9 +65,7 @@ bool AbstractTask::sleep(unsigned millisecond)
auto start = std::chrono::steady_clock::now();
long long duration = 0;
json::value callback_json;
callback_json["time"] = millisecond;
m_callback(AsstMsg::ReadyToSleep, callback_json, m_callback_arg);
Log.trace("ready to sleep", millisecond);
while (!need_exit() && duration < millisecond) {
duration = std::chrono::duration_cast<std::chrono::milliseconds>(
@@ -60,7 +73,7 @@ bool AbstractTask::sleep(unsigned millisecond)
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::yield();
}
m_callback(AsstMsg::EndOfSleep, callback_json, m_callback_arg);
Log.trace("end of sleep", millisecond);
return !need_exit();
}
@@ -73,12 +86,6 @@ bool AbstractTask::save_image(const cv::Mat image, const std::string& dir)
bool ret = cv::imwrite(filename, image);
json::value callback_json;
callback_json["filename"] = filename;
callback_json["ret"] = ret;
callback_json["offset"] = 0;
m_callback(AsstMsg::PrintWindow, callback_json, m_callback_arg);
return true;
}