// // Created by huli on 2020/6/29. // #ifndef NNXX_TESTS_COMMUNICATION_MESSAGE_H #define NNXX_TESTS_COMMUNICATION_MESSAGE_H #include "../error_code/error_code.h" #include #include #include //#include #include #include "../message/message_base.pb.h" class Communication_message { public: //消息类型定义,每个在网络上传输的消息必须含有这个属性 enum Message_type { eBase_msg = 0x00, eCommand_msg = 0x01, //指令消息 eLocate_status_msg = 0x11, //定位模块状态消息 eLocate_request_msg = 0x12, //定位请求消息 eLocate_response_msg = 0x13, //定位反馈消息 eHarware_statu_msg = 0x21, //调度模块硬件状态消息 eExecute_request_msg = 0x22, //请求调度消息 eExecute_response_msg = 0x23, //调度结果反馈消息 eParkspace_allocation_status_msg = 0x31, //车位分配模块状态消息,包括车位信息 eParkspace_allocation_request_msg = 0x32, //请求分配车位消息 eParkspace_allocation_response_msg = 0x33, //分配车位结果反馈消息 eParkspace_search_request_msg = 0x34, //查询车位请求消息 eParkspace_search_response_msg = 0x35, //查询车位反馈消息 eParkspace_release_request_msg = 0x36, //释放车位请求消息 eParkspace_release_response_msg = 0x37, //释放车位反馈消息 eParkspace_force_update_request_msg = 0x38, //手动修改车位消息 eParkspace_force_update_response_msg = 0x39,//手动修改车位反馈消息 eParkspace_confirm_alloc_request_msg = 0x3a,//确认分配车位请求消息 eParkspace_confirm_alloc_response_msg = 0x3b,//确认分配车位反馈消息 }; //通讯单元 enum Communicator { eEmpty=0x0000, //空 eMain=0x0001, //主流程 eTerminor=0x0100, //终端 eParkspace=0x0200, //数据表 eMeasurer=0x0300, //测量单元 eProcess=0x0400, //调度机构 //... }; public: Communication_message(); Communication_message(std::string message_buf); Communication_message(char* p_buf, int size); Communication_message(const Communication_message& other)= default; Communication_message& operator =(const Communication_message& other)= default; ~Communication_message(); public://API functions bool is_over_time(); public://get or set member variable void reset(const message::Base_info& base_info, std::string receive_string); Message_type get_message_type(); Communicator get_sender(); Communicator get_receiver(); std::string& get_message_buf(); protected://member variable Message_type m_message_type; //消息类型 std::chrono::system_clock::time_point m_receive_time; //接收消息的时间点 std::chrono::milliseconds m_timeout_ms; //超时时间, 整个软件都统一为毫秒 Communicator m_sender; //发送者 Communicator m_receiver; //接受者 std::string m_message_buf; //消息数据 private: }; #endif //NNXX_TESTS_COMMUNICATION_MESSAGE_H