Parkspace_communicator.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // Created by zx on 2020/7/9.
  3. //
  4. #ifndef NNXX_TESTS_PARKSPACE_COMMUNICATOR_H
  5. #define NNXX_TESTS_PARKSPACE_COMMUNICATOR_H
  6. #include <parkspace_allocation_message.pb.h>
  7. #include "communication_socket_base.h"
  8. #include "singleton.h"
  9. #include "thread_safe_map.h"
  10. class Parkspace_communicator :public Singleton<Parkspace_communicator>, public Communication_socket_base
  11. {
  12. friend Singleton<Parkspace_communicator>;
  13. public:
  14. virtual ~Parkspace_communicator();
  15. /*
  16. * 请求分配车位
  17. */
  18. Error_manager alloc_request(message::Parkspace_allocation_request_msg& request,
  19. message::Parkspace_allocation_response_msg& result,Thread_condition& cancel_condition);
  20. /*
  21. * 查询车辆所在位置请求
  22. */
  23. Error_manager search_request(message::Parkspace_search_request_msg& request,
  24. message::Parkspace_search_response_msg& response,Thread_condition& cancel_condition);
  25. /*
  26. * 释放车位请求(停车失败或者取车完成时调用)
  27. */
  28. Error_manager release_request(message::Parkspace_release_request_msg& request,
  29. message::Parkspace_release_response_msg& response,Thread_condition& cancel_condition);
  30. /*
  31. * 确认占用车位消息
  32. */
  33. Error_manager confirm_request(message::Parkspace_confirm_alloc_request_msg& request,
  34. message::Parkspace_confirm_alloc_response_msg& response,Thread_condition& cancel_condition);
  35. Error_manager check_statu();
  36. protected:
  37. Parkspace_communicator();
  38. virtual Error_manager encapsulate_msg(Communication_message* message);
  39. virtual Error_manager execute_msg(Communication_message* p_msg);
  40. /*
  41. * 检测消息是否可被处理
  42. */
  43. virtual Error_manager check_msg(Communication_message* p_msg);
  44. /*
  45. * 心跳发送函数,重载
  46. */
  47. virtual Error_manager encapsulate_send_data();
  48. //检查消息是否可以被解析, 需要重载
  49. virtual Error_manager check_executer(Communication_message* p_msg);
  50. protected:
  51. thread_safe_map<std::string,message::Parkspace_allocation_response_msg> m_alloc_table;
  52. thread_safe_map<std::string,message::Parkspace_search_response_msg> m_search_table;
  53. thread_safe_map<std::string,message::Parkspace_release_response_msg> m_release_table;
  54. thread_safe_map<std::string,message::Parkspace_confirm_alloc_response_msg> m_confirm_table;
  55. message::Parkspace_allocation_status_msg m_parkspace_status_msg;
  56. std::chrono::system_clock::time_point m_parkspace_statu_time;
  57. };
  58. #endif //NNXX_TESTS_PARKSPACE_COMMUNICATOR_H