1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- //
- // Created by zx on 2020/8/20.
- //
- #ifndef NNXX_TESTS_ERROR_HANDLING_H
- #define NNXX_TESTS_ERROR_HANDLING_H
- #include "communication_socket_base.h"
- #include "singleton.h"
- #include "manual_operation_message.pb.h"
- #include "error_code.h"
- #include "thread_safe_map.h"
- #include "StoreProcessTask.h"
- #include "PickupProcessTask.h"
- class Exception_solver :public Singleton<Exception_solver>, public Communication_socket_base
- {
- friend Singleton<Exception_solver>;
- public:
- virtual ~Exception_solver();
- /*
- * 添加流程的任务取消标志位
- * license:车牌号,作为流程任务的唯一标识
- */
- Error_manager add_task_cancel_condition(std::string license,Process_task* task);
- /*
- * 删除流程的任务取消标志位
- * license:车牌号,作为流程任务的唯一标识
- */
- Error_manager delete_task_cancel_condition(std::string license);
- /*
- * 处理故障
- */
- Error_manager solve_exception(Error_manager code,Process_task* task);
- /*
- * 等待手动消息
- */
- Error_manager waitfor_manual_operate_msg(Process_task* task,message::Manual_operation_msg msg);
- protected:
- Exception_solver();
- virtual Error_manager encapsulate_msg(Communication_message* message);
- virtual Error_manager execute_msg(Communication_message* p_msg);
- /*
- * 检测消息是否可被处理
- */
- virtual Error_manager check_msg(Communication_message* p_msg);
- /*
- * 心跳发送函数,重载
- */
- virtual Error_manager encapsulate_send_data();
- //检查消息是否可以被解析, 需要重载
- virtual Error_manager check_executer(Communication_message* p_msg);
- private:
- thread_safe_map<std::string,tq::BaseTask*> m_ptask_map;
- thread_safe_map<std::string,message::Manual_operation_msg> m_manual_msg_map;
- };
- #endif //NNXX_TESTS_ERROR_HANDLING_H
|