1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- //
- // Created by zx on 2020/6/18.
- //
- #ifndef NNXX_TESTS_LOCATE_COMMUNICATOR_H
- #define NNXX_TESTS_LOCATE_COMMUNICATOR_H
- #include <mutex>
- #include "communication_socket_base.h"
- #include "singleton.h"
- #include "measure_message.pb.h"
- #include "error_code.h"
- #include "thread_safe_map.h"
- /*
- * 注册消息的比较函数,用于重载==与<符号,使其可以用作map中的key
- */
- class Locate_communicator: public Singleton<Locate_communicator>, public Communication_socket_base
- {
- friend Singleton<Locate_communicator>;
- public:
- virtual ~Locate_communicator();
- Error_manager locate_request(message::Measure_request_msg& request,message::Measure_response_msg& result);
- /*
- * 提前取消请求
- */
- Error_manager cancel_request(message::Measure_request_msg& request);
- Error_manager check_statu(int terminal_id);
- protected:
- Locate_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);
- protected:
- thread_safe_map<std::string,message::Measure_response_msg> m_response_table;
- thread_safe_map<int ,message::Measure_status_msg > m_measure_statu_msg_map;
- thread_safe_map<int ,std::chrono::system_clock::time_point> m_statu_recv_time_map;
- };
- #endif //NNXX_TESTS_LOCATE_COMMUNICATOR_H
|