// // Created by zx on 2020/8/26. // #include #include #include #include "process_task.h" #include "pathcreator.h" #include "command_accepter.h" thread_safe_map Process_task::m_storing_carlicense_terminal_id; thread_safe_map Process_task::m_picking_carlicense_terminal_id; Process_task::Process_task(unsigned int terminal_id,message::Car_info car_info) :m_publish_statu_thread(nullptr) { m_terminor_id=terminal_id; m_car_info=car_info; m_step_index=0; } Process_task::~Process_task() { } Error_manager Process_task::init_task(const ::google::protobuf::Message& parameter) { ///创建状态发布线程 if(m_publish_statu_thread== nullptr) { m_publish_exit_condition.reset(false, false, false); m_publish_statu_thread=new std::thread(publish_thread_func,this); } return SUCCESS; } /* * 取消任务 */ void Process_task::Cancel() { m_current_step_type= message::eBackComplete; m_cancel_condition.set_pass_ever(true); ALOG(WARNING)<<"取消当前任务"; tq::BaseTask::Cancel(); } /* * 发布进度 */ void Process_task::publish_thread_func(Process_task* ptask) { if(ptask) { //未收到退出信号 while(false==ptask->m_publish_exit_condition.wait_for_ex(std::chrono::milliseconds(100))) { ptask->publish_step_status(); } } } /* * 任务是否取消 */ bool Process_task::is_canceled() { return m_cancel_condition.wait_for_millisecond(1); } #include //普通日志 void Process_task::add_log(int severity,std::string log) { /*message::Log_data log_data; log_data.set_log_severity(message::Log_data_Severity (severity)); log_data.set_str_log(log); m_process_log.mutable_log_data()->Add(std::move(log_data));*/ } //以下是节点日志 void Process_task::add_log(int severity,const message::Node_log& data) { /*message::Log_data log_data; log_data.set_log_severity(message::Log_data_Severity(severity)); log_data.mutable_node_log()->CopyFrom(data); m_process_log.mutable_log_data()->Add(std::move(log_data));*/ } void Process_task::add_log(int severity,const message::Manual_operation_log& data) { /*message::Log_data log_data; log_data.set_log_severity(message::Log_data_Severity(severity)); log_data.mutable_manual_operator_log()->CopyFrom(data); m_process_log.mutable_log_data()->Add(std::move(log_data));*/ } void Process_task::Main() { //保存日志记录 time_t tt; time( &tt ); tt = tt + 8*3600; // transform the time zone tm* t= gmtime( &tt ); char buf[255]={0}; getcwd(buf,255); char strdir[255]={0}; sprintf(strdir,"%s/process_log/%d/%02d/%02d", buf,t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); PathCreator creator; creator.Mkdir(strdir); char filename[255]={0}; std::string type=m_process_log.process_type()==message::eStoring?"停":"取"; sprintf(filename,"%02d%02d%02d-%s-%s.proto", t->tm_hour, t->tm_min, t->tm_sec, m_car_info.license().c_str(), type.c_str()); char logPath[255] = { 0 }; sprintf(logPath, "%s/%s", strdir,filename); to_proto(logPath); /*for(int i=0;i