123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //
- // Created by zx on 2020/7/9.
- //
- #ifndef NNXX_TESTS_PARKSPACE_COMMUNICATOR_H
- #define NNXX_TESTS_PARKSPACE_COMMUNICATOR_H
- #include <parkspace_allocation_message.pb.h>
- #include "communication_socket_base.h"
- #include "singleton.h"
- #include "thread_safe_map.h"
- #include "message_compare.h"
- /*
- * 注册消息的比较函数,用于重载==与<符号,使其可以用作map中的key
- */
- RegistoryCompare(message,message::Parkspace_allocation_request_msg);
- RegistoryCompare(message,message::Parkspace_search_request_msg)
- RegistoryCompare(message,message::Parkspace_release_request_msg)
- RegistoryCompare(message,Parkspace_confirm_alloc_request_msg)
- class Parkspace_communicator :public Singleton<Parkspace_communicator>, public Communication_socket_base
- {
- friend Singleton<Parkspace_communicator>;
- public:
- virtual ~Parkspace_communicator();
- /*
- * 请求分配车位
- */
- Error_manager alloc_request(message::Parkspace_allocation_request_msg& request,message::Parkspace_allocation_response_msg& result);
- /*
- * 查询车辆所在位置请求
- */
- Error_manager search_request(message::Parkspace_search_request_msg& request,message::Parkspace_search_response_msg& response);
- /*
- * 释放车位请求(停车失败或者取车完成时调用)
- */
- Error_manager release_request(message::Parkspace_release_request_msg& request,message::Parkspace_release_response_msg& response);
- /*
- * 确认占用车位消息
- */
- Error_manager confirm_request(message::Parkspace_confirm_alloc_request_msg& request,message::Parkspace_confirm_alloc_response_msg& response);
- Error_manager check_statu();
- protected:
- Parkspace_communicator();
- virtual Error_manager encapsulate_msg(Communication_message* message);
- virtual Error_manager execute_msg(Communication_message* p_msg);
- /*
- * 检测消息是否可被处理
- */
- virtual Error_manager check_msg(Communication_message* p_msg);
- /*
- * 心跳发送函数,重载
- */
- virtual Error_manager encapsulate_send_data();
- //检查消息是否可以被解析, 需要重载
- virtual Error_manager check_executer(Communication_message* p_msg);
- /*
- * 根据接收到的response,生成对应的 request
- */
- message::Parkspace_allocation_request_msg create_request_by_response(message::Parkspace_allocation_response_msg& msg);
- message::Parkspace_search_request_msg create_request_by_response(message::Parkspace_search_response_msg& msg);
- message::Parkspace_release_request_msg create_request_by_response(message::Parkspace_release_response_msg& msg);
- message::Parkspace_confirm_alloc_request_msg create_request_by_response(message::Parkspace_confirm_alloc_response_msg& msg);
- protected:
- thread_safe_map<message::Parkspace_allocation_request_msg,message::Parkspace_allocation_response_msg> m_alloc_table;
- thread_safe_map<message::Parkspace_search_request_msg,message::Parkspace_search_response_msg> m_search_table;
- thread_safe_map<message::Parkspace_release_request_msg,message::Parkspace_release_response_msg> m_release_table;
- thread_safe_map<message::Parkspace_confirm_alloc_request_msg,message::Parkspace_confirm_alloc_response_msg> m_confirm_table;
- message::Parkspace_allocation_status_msg m_parkspace_status_msg;
- std::chrono::system_clock::time_point m_parkspace_statu_time;
- };
- #endif //NNXX_TESTS_PARKSPACE_COMMUNICATOR_H
|