// // Created by zx on 2020/7/14. // /* * 指令管理, 包括指令的接收,指令的执行控制,指令的状态追踪,出入口状态 */ #ifndef NNXX_TESTS_COMMAND_MANAGER_H #define NNXX_TESTS_COMMAND_MANAGER_H #include #include #include #include "thread_condition.h" #include "singleton.h" #include "TaskQueue/TQFactory.h" #include "TaskQueue/BaseTask.h" #include "process_message.pb.h" #include "thread_safe_map.h" class Command_manager :public Singleton{ friend Singleton; public: ~Command_manager(); /* * 初始化函数,创建线程池,创建状态广播线程, */ Error_manager init(); /* * 执行停车请求 */ Error_manager execute_store_command(message::Store_command_request_msg& request,message::Store_command_response_msg& response); /* * 执行取车请求 */ Error_manager execute_pickup_command(message::Pickup_command_request_msg& request,message::Pickup_command_response_msg& response); private: Command_manager(); protected: /* * 停取车终端 map,key值为终端编号,value为终端指令执行器task,可放入线程池执行流程 */ thread_safe_map m_store_command_task_map; thread_safe_map m_pick_command_task_map; tq::IQueue* m_thread_queue_process; //指令流程线程池 }; #endif //NNXX_TESTS_COMMAND_MANAGER_H