// // 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, //定位反馈消息 eDispatch_status_msg=0x21, //调度模块硬件状态消息 eDispatch_request_msg=0x22, //请求调度消息 eDispatch_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,//确认分配车位反馈消息 eParkspace_refresh_request_msg = 0x3C,//更新车位数据请求消息 eParkspace_allocation_data_response_msg =0x3D,//车位数据反馈消息 eStore_command_request_msg=0x41, //终端停车请求消息 eStore_command_response_msg=0x42, //停车请求反馈消息 ePickup_command_request_msg=0x43, //取车请求消息 ePickup_command_response_msg=0x44, //取车请求反馈消息 eStoring_process_statu_msg=0x90, //停车进度条消息 ePicking_process_statu_msg=0x91, //取车进度消息 eCentral_controller_statu_msg=0xa0, //中控状态消息 eEntrance_manual_operation_msg=0xb0, //针对出入口状态操作的手动消息 eProcess_manual_operation_msg=0xb1, }; //通讯单元 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