parkspace_allocation_communicator.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //
  2. // Created by zx on 2020/6/18.
  3. //
  4. #ifndef PARKSPACE_ALLOCATION_COMMUNICATOR_H
  5. #define PARKSPACE_ALLOCATION_COMMUNICATOR_H
  6. #include <mutex>
  7. #include "communication_socket_base.h"
  8. #include "singleton.h"
  9. #include "parkspace_allocation_message.pb.h"
  10. #include "error_code.h"
  11. class Parkspace_allocation_communicator: public Singleton<Parkspace_allocation_communicator>, public Communication_socket_base
  12. {
  13. friend Singleton<Parkspace_allocation_communicator>;
  14. /*
  15. //huli 构造函数按照排版 放上面 私有
  16. private:
  17. Parkspace_allocation_communicator();
  18. */
  19. public:
  20. virtual ~Parkspace_allocation_communicator();
  21. //外部调用,反馈结果消息
  22. Error_manager send_response(Communication_message* message);
  23. //更新所有车位状态,现有状态将被全部覆盖,车位数量可能变动
  24. Error_manager update_parkspace_status(message::Parkspace_allocation_status_msg message);
  25. //更新某个车位状态,不修改车位数量,车位按编号从0开始
  26. Error_manager update_parkspace_status(int parkspace_id, message::Parkspace_info parkspace_info);
  27. //获取所有车位状态
  28. message::Parkspace_allocation_status_msg get_status();
  29. protected:
  30. //huli 单例的构造函数 必须私有 移到上面去
  31. Parkspace_allocation_communicator();
  32. //封装反馈消息,加入队列父类自行发送
  33. virtual Error_manager encapsulate_msg(Communication_message* message);
  34. //解析车位分配请求消息具体内容,激活车位分配单例处理函数(不可阻塞),获得结果后由车位分配单例封装消息发送
  35. virtual Error_manager execute_msg(Communication_message* p_msg);
  36. //检查是否接收到本模块需要的消息,重载后父类自行调用判断
  37. virtual Error_manager check_msg(Communication_message* p_msg);
  38. //重载检查执行者函数,判断执行者状态
  39. virtual Error_manager check_executer(Communication_message* p_msg);
  40. //心跳与车位实时信息
  41. virtual Error_manager encapsulate_send_data();
  42. protected:
  43. message::Parkspace_allocation_status_msg m_parkspace_status_msg;
  44. std::mutex m_status_mutex;
  45. //huli 这2个成员变量直接删除 不要临时缓存和保护锁
  46. //直接与数据库交互
  47. };
  48. #endif //PARKSPACE_ALLOCATION_COMMUNICATOR_H