command_manager.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // Created by zx on 2020/7/14.
  3. //
  4. /*
  5. * 指令管理, 包括指令的接收,指令的执行控制,指令的状态追踪,出入口状态
  6. */
  7. #ifndef NNXX_TESTS_COMMAND_MANAGER_H
  8. #define NNXX_TESTS_COMMAND_MANAGER_H
  9. #include <error_code.h>
  10. #include <terminal_message.pb.h>
  11. #include <communication_message.h>
  12. #include "thread_condition.h"
  13. #include "singleton.h"
  14. #include "TaskQueue/TQFactory.h"
  15. #include "TaskQueue/BaseTask.h"
  16. #include "process_message.pb.h"
  17. #include "thread_safe_map.h"
  18. class Command_manager :public Singleton<Command_manager>{
  19. friend Singleton<Command_manager>;
  20. public:
  21. ~Command_manager();
  22. /*
  23. * 初始化函数,创建线程池,创建状态广播线程,
  24. */
  25. Error_manager init();
  26. /*
  27. * 执行停车请求
  28. */
  29. Error_manager execute_store_command(message::Store_command_request_msg& request,message::Store_command_response_msg& response);
  30. /*
  31. * 执行取车请求
  32. */
  33. Error_manager execute_pickup_command(message::Pickup_command_request_msg& request,message::Pickup_command_response_msg& response);
  34. private:
  35. Command_manager();
  36. protected:
  37. /*
  38. * 停取车终端 map,key值为终端编号,value为终端指令执行器task,可放入线程池执行流程
  39. */
  40. thread_safe_map<int,tq::BaseTask*> m_store_command_task_map;
  41. thread_safe_map<int,tq::BaseTask*> m_pick_command_task_map;
  42. tq::IQueue* m_thread_queue_process; //指令流程线程池
  43. };
  44. #endif //NNXX_TESTS_COMMAND_MANAGER_H