// // Created by zx on 2020/7/7. // #ifndef NNXX_TESTS_TAKEPROCESS_H #define NNXX_TESTS_TAKEPROCESS_H #include #include "process_message.pb.h" #include "error_code.h" #include "TaskQueue/BaseTask.h" #include "dispatch_communicator.h" class PickupProcessTask :public tq::BaseTask{ public: PickupProcessTask(unsigned int terminal_id); virtual ~PickupProcessTask(); Error_manager init_task(unsigned int command_id,message::Car_info car_info); /* * 检查当前任务是否处于空闲准备状态 */ bool is_ready(); /* * 查询车位 */ Error_manager search_space(); protected: virtual void Main(); /* * 执行取车动作请求,并等待执行完成 */ Error_manager pickup_step(); /* * 等待车辆离开 */ Error_manager wait_for_leave_step(); /* * 清除车位表中对应的车位 */ Error_manager release_space_step(); /* * reset 进度信息 */ void reset_process_statu(); /* * 发布进度 */ static void publish_thread_func(PickupProcessTask* p_commander); void publish_step_status(); protected: unsigned int m_command_id; unsigned int m_terminor_id; message::Car_info m_car_info; //当前流程的车辆信息 std::thread* m_publish_statu_thread; //广播状态线程 Thread_condition m_publish_exit_condition; //发送的条件变量 private: //查询到的车位信息 message::Parkspace_search_response_msg m_parcspace_search_response_msg; //取车调度反馈信息 message::Dispatch_response_msg m_dispatch_response_msg; //取车车位的进度状态 message::Picking_process_statu_msg m_picking_process_statu_msg; }; #endif //NNXX_TESTS_TAKEPROCESS_H