12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // Created by huli on 2020/7/2.
- //
- #ifndef NNXX_TESTS_SYSTEM_EXECUTOR_H
- #define NNXX_TESTS_SYSTEM_EXECUTOR_H
- #include "../tool/thread_pool.h"
- #include "../tool/singleton.h"
- #include "../error_code/error_code.h"
- #include "../communication/communication_message.h"
- #include "../dispatch/dispatch_manager.h"
- //#include "../locate/locate_manager.h"
- //#include "../locate/locate_manager_task.h"
- class System_executor:public Singleton<System_executor>
- {
- // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
- friend class Singleton<System_executor>;
- public:
- //系统执行者的状态
- enum System_executor_status
- {//default SYSTEM_EXECUTOR_UNKNOW = 0
- SYSTEM_EXECUTOR_UNKNOW = 0, //
- SYSTEM_EXECUTOR_READY = 1, //
- SYSTEM_EXECUTOR_FAULT = 10, //
- };
-
- private:
- // 父类的构造函数必须保护,子类的构造函数必须私有。
- System_executor();
- public:
- //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
- System_executor(const System_executor& other) = delete;
- System_executor& operator =(const System_executor& other) = delete;
- ~System_executor();
- public://API functions
- //初始化
- Error_manager system_executor_init(int threads_size);
- //反初始化
- Error_manager system_executor_uninit();
- //检查消息是否有效, 主要检查消息类型和接受者, 判断这条消息是不是给我的.
- Error_manager check_msg(Communication_message* p_msg);
- //检查执行者的状态, 判断能否处理这条消息,
- Error_manager check_executer(Communication_message* p_msg);
- //处理消息的执行函数
- Error_manager execute_msg(Communication_message* p_msg);
- //检查状态
- Error_manager check_status();
- //定时发送状态信息
- Error_manager encapsulate_send_status();
- //判断是否为待机,如果已经准备好,则可以执行任务。
- bool is_ready();
- public://get or set member variable
- System_executor_status get_system_executor_status();
- public:
- //雷达感测定位 的处理函数
- //input::command_id, 消息指令id, 由主控制系统生成的唯一码
- //input::command_id, 终端id, 对应具体的某个车位
- //return::void, 没有返回, 执行结果直接生成一条答复消息, 然后通过通信返回
- void execute_for_measure(std::string command_key, int terminal_id);
- //调度模块的处理函数
- void execute_for_dispatch(std::string command_key, Dispatch_manager::Dispatch_motion_direction dispatch_motion_direction,
- int terminal_id, int parkspace_id, Locate_information * p_locate_information);
- protected://member variable
- System_executor_status m_system_executor_status; //系统执行者的状态
-
- Thread_pool m_thread_pool; //执行多任务的线程池
- private:
- };
- #endif //NNXX_TESTS_SYSTEM_EXECUTOR_H
|