Jelajahi Sumber

20200707, 优化通信模块

huli 4 tahun lalu
induk
melakukan
314df73e54

+ 2 - 1
CMakeLists.txt

@@ -60,7 +60,8 @@ add_executable(terminal
         ${COMMUNICATION_SRC}
         ${SYSTEM_SRC}
 
-        )
+
+		)
 
 target_link_libraries(terminal
         /usr/local/lib/libglog.a

+ 5 - 5
communication/communication_message.cpp

@@ -55,14 +55,14 @@ bool Communication_message::is_over_time()
 }
 
 
-void Communication_message::reset(message::Base_msg& base_msg, std::string receive_string)
+void Communication_message::reset(const message::Base_info& base_info, std::string receive_string)
 {
-	m_message_type = (Message_type)(base_msg.msg_type());
+	m_message_type = (Message_type)(base_info.msg_type());
 
 	m_receive_time = std::chrono::system_clock::now();
-	m_timeout_ms = std::chrono::milliseconds(base_msg.timeout_ms());
-	m_sender = (Communicator)(base_msg.sender());
-	m_receiver = (Communicator)(base_msg.receiver());
+	m_timeout_ms = std::chrono::milliseconds(base_info.timeout_ms());
+	m_sender = (Communicator)(base_info.sender());
+	m_receiver = (Communicator)(base_info.receiver());
 	m_message_buf = receive_string;
 }
 

+ 1 - 1
communication/communication_message.h

@@ -55,7 +55,7 @@ public:
 public://API functions
 	bool is_over_time();
 public://get or set member variable
-	void reset(message::Base_msg& base_msg, std::string receive_string);
+	void reset(const message::Base_info& base_info, std::string receive_string);
 
 	Message_type get_message_type();
 	Communicator get_sender();

+ 20 - 10
communication/communication_socket_base.cpp

@@ -12,6 +12,9 @@ Communication_socket_base::Communication_socket_base()
 	mp_analysis_data_thread = NULL;
 	mp_send_data_thread = NULL;
 	mp_encapsulate_data_thread = NULL;
+
+	m_analysis_cycle_time = 1000;//默认1000ms,就自动解析(接受list)
+	m_encapsulate_cycle_time = 1000;//默认1000ms,就自动发送一次状态信息
 }
 
 Communication_socket_base::~Communication_socket_base()
@@ -224,7 +227,14 @@ Error_manager Communication_socket_base::communication_uninit()
 }
 
 
-
+void Communication_socket_base::set_analysis_cycle_time(unsigned int analysis_cycle_time)
+{
+	m_analysis_cycle_time = analysis_cycle_time;
+}
+void Communication_socket_base::set_encapsulate_cycle_time(unsigned int encapsulate_cycle_time)
+{
+	m_encapsulate_cycle_time = encapsulate_cycle_time;
+}
 
 
 
@@ -257,7 +267,7 @@ void Communication_socket_base::receive_data_thread()
 				{
 					//第一次解析之后转化为, Communication_message, 自定义的通信消息格式
 					Communication_message  * tp_communication_message = new Communication_message;
-					tp_communication_message->reset(t_base_msg, t_receive_string);
+					tp_communication_message->reset(t_base_msg.base_info(), t_receive_string);
 					//检查消息是否有效, 主要检查消息类型和接受者, 判断这条消息是不是给我的.
 					if ( check_msg(tp_communication_message) == SUCCESS )
 					{
@@ -321,7 +331,7 @@ void Communication_socket_base::analysis_data_thread()
 	//通信解析线程, 负责巡检m_receive_data_list, 并解析和处理消息
 	while (m_analysis_data_condition.is_alive())
 	{
-		bool t_pass_flag = m_analysis_data_condition.wait_for_millisecond(1000);
+		bool t_pass_flag = m_analysis_data_condition.wait_for_millisecond(m_analysis_cycle_time);
 		if ( m_analysis_data_condition.is_alive() )
 		{
 			std::this_thread::yield();
@@ -426,7 +436,7 @@ Error_manager Communication_socket_base::check_executer(Communication_message*
 		bool executer_is_ready = false;
 		//通过 p_msg->get_message_type() 和 p_msg->get_receiver() 找到处理模块的实例对象, 查询执行人是否可以处理这条消息
 		//这里子类重载时, 增加判断逻辑, 以后再写.
-//		executer_is_ready = true;
+		executer_is_ready = true;
 
 		std::cout << "Communication_socket_base::check_msg  p_buf =  " << p_msg->get_message_buf() << std::endl;
 		std::cout << "Communication_socket_base::check_msg   size =  " << p_msg->get_message_buf().size() << std::endl;
@@ -518,7 +528,7 @@ void Communication_socket_base::encapsulate_data_thread()
 	//通信封装线程, 负责定时封装消息, 并存入 m_send_data_list
 	while (m_encapsulate_data_condition.is_alive())
 	{
-		bool t_pass_flag = m_encapsulate_data_condition.wait_for_millisecond(1000);
+		bool t_pass_flag = m_encapsulate_data_condition.wait_for_millisecond(m_encapsulate_cycle_time);
 		if ( m_encapsulate_data_condition.is_alive() )
 		{
 			std::this_thread::yield();
@@ -547,12 +557,12 @@ Error_manager Communication_socket_base::encapsulate_send_data()
 //	static unsigned int t_heartbeat = 0;
 //	sprintf(buf, "Communication_socket_base, heartbeat = %d\0\0\0, test\0", t_heartbeat);
 //	t_heartbeat++;
-
+    return SUCCESS;
 	message::Base_msg t_base_msg;
-	t_base_msg.set_msg_type(message::Message_type::eBase_msg);
-	t_base_msg.set_timeout_ms(5000);
-	t_base_msg.set_sender(message::Communicator::eMain);
-	t_base_msg.set_receiver(message::Communicator::eMain);
+	t_base_msg.mutable_base_info()->set_msg_type(message::Message_type::eBase_msg);
+	t_base_msg.mutable_base_info()->set_timeout_ms(5000);
+	t_base_msg.mutable_base_info()->set_sender(message::Communicator::eMain);
+	t_base_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
 
 	Communication_message* tp_msg = new Communication_message(t_base_msg.SerializeAsString());
 	bool is_push = m_send_data_list.push(tp_msg);

+ 6 - 3
communication/communication_socket_base.h

@@ -75,6 +75,8 @@ public://API functions
 	
 	
 public://get or set member variable
+	void set_analysis_cycle_time(unsigned int analysis_cycle_time);
+	void set_encapsulate_cycle_time(unsigned int encapsulate_cycle_time);
 
 protected:
 	//mp_receive_data_thread 接受线程执行函数,
@@ -91,7 +93,7 @@ protected:
 	//遍历接受链表, 解析消息,
 	Error_manager analysis_receive_list();
 
-	//检查消息是否可以被解析, 需要子类重载
+	//检查执行者的状态, 判断能否处理这条消息, 需要子类重载
 	virtual Error_manager check_executer(Communication_message* p_msg);
 
 	//处理消息, 需要子类重载
@@ -129,7 +131,7 @@ protected://member variable
 	Thread_condition					m_receive_condition;			//接受的条件变量
 	std::thread*						mp_analysis_data_thread;    	//解析的线程指针
 	Thread_condition					m_analysis_data_condition;		//解析的条件变量
-
+	unsigned int 						m_analysis_cycle_time;			//自动解析的时间周期
 
 	//发送模块,
 	Thread_safe_list<Communication_message*>		m_send_data_list;				//发送的list容器
@@ -137,7 +139,8 @@ protected://member variable
 	Thread_condition					m_send_data_condition;			//发送的条件变量
 	std::thread*						mp_encapsulate_data_thread;    	//封装的线程指针
 	Thread_condition					m_encapsulate_data_condition;	//封装的条件变量
-	
+	unsigned int 						m_encapsulate_cycle_time;		//自动封装的时间周期
+
 
 
 private:

+ 13 - 0
error_code/error_code.h

@@ -55,6 +55,7 @@ enum Error_code
 
     NO_DATA                         = 0x00000010,//没有数据,传入参数容器内部没有数据时,
 	INVALID_MESSAGE					= 0x00000011, //无效的消息,
+    RESPONSE_TIMEOUT                = 0x00000012,
 
     POINTER_IS_NULL                 = 0x00000101,//空指针
     PARAMETER_ERROR                 = 0x00000102,//参数错误,传入参数不符合规范时,
@@ -283,6 +284,18 @@ enum Error_code
 	COMMUNICATION_CONNECT_ERROR,
 	COMMUNICATION_ANALYSIS_TIME_OUT,									//解析超时,
 	COMMUNICATION_EXCUTER_IS_BUSY,										//处理器正忙, 请稍等
+
+
+	//system module, 系统模块
+	SYSTEM_EXECUTOR_ERROR_BASE						= 0x12010000,		//系统执行模块,
+	SYSTEM_EXECUTOR_PARSE_ERROR,										//系统执行模块, 解析消息错误
+	
+	    LOCATER_MSG_TABLE_NOT_EXIST ,
+    LOCATER_MSG_RESPONSE_TYPE_ERROR,
+    LOCATER_MSG_RESPONSE_INFO_ERROR,
+    LOCATER_MSG_REQUEST_INVALID,
+    LOCATER_MSG_RESPONSE_HAS_NO_REQUEST,
+
 };
 
 //错误等级,用来做故障处理

+ 30 - 17
main.cpp

@@ -15,37 +15,50 @@
 
 #include "./communication/communication_socket_base.h"
 
-#include "./tool/ThreadPool.h"
+#include "./tool/thread_pool.h"
+#include "./system/system_communication.h"
 
 #define LIVOX_NUMBER	     2
 
+
+void asd(int i)
+{
+	std::cout << " i = " << i << std::endl;
+}
+
 int main(int argc,char* argv[])
 {
-	Communication_socket_base csb;
+
+
+//	System_communication csb;
 
 //	std::vector<std::string> connect_string_vector;
 //	connect_string_vector.push_back("tcp://192.168.2.166:9001");
 //	csb.communication_init("tcp://192.168.2.166:9000", connect_string_vector);
 
-	csb.communication_init();
+//	csb.communication_init();
 
-	char ch ;
-	std::cin >> ch ;
-	return 0;
+//	System_communication::get_instance_references().communication_init();
+//
+//	char ch ;
+//	std::cin >> ch ;
+//	return 0;
 
-	ThreadPool pool(4);
+	Thread_pool pool(4);
 	std::vector< std::future<int> > results;
 
-	for(int i = 0; i < 8; ++i) {
-		results.emplace_back(
-		pool.enqueue([i] {
-			std::cout << "hello " << i << std::endl;
-			std::this_thread::sleep_for(std::chrono::seconds(1));
-			std::cout << "world " << i << std::endl;
-			return i*i;
-		})
-		);
-	}
+//	for(int i = 0; i < 8; ++i) {
+//		results.emplace_back(
+//		pool.enqueue([i] {
+//			std::cout << "hello " << i << std::endl;
+//			std::this_thread::sleep_for(std::chrono::seconds(1));
+//			std::cout << "world " << i << std::endl;
+//			return i*i;
+//		})
+//		);
+//	}
+
+	pool.enqueue(&asd,8);
 
 	for(auto && result: results)
 		std::cout << result.get() << ' ';

+ 75 - 75
message/hardware_message.pb.cc

@@ -120,7 +120,7 @@ void InitDefaultsExecute_request_msgImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   {
     void* ptr = &::message::_Execute_request_msg_default_instance_;
@@ -143,7 +143,7 @@ void InitDefaultsExecute_response_msgImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   {
     void* ptr = &::message::_Execute_response_msg_default_instance_;
     new (ptr) ::message::Execute_response_msg();
@@ -205,7 +205,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_request_msg, msg_base_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_request_msg, msg_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_request_msg, command_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_request_msg, action_type_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_request_msg, from_id_),
@@ -222,7 +222,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_response_msg, msg_base_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_response_msg, msg_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_response_msg, command_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_response_msg, error_code_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Execute_response_msg, error_description_),
@@ -280,21 +280,21 @@ void AddDescriptorsImpl() {
       "/\n\016carrier1_statu\030\002 \002(\0132\027.message.Carrie"
       "r_status\022/\n\016carrier2_statu\030\003 \002(\0132\027.messa"
       "ge.Carrier_status\022/\n\016carrier3_statu\030\004 \002("
-      "\0132\027.message.Carrier_status\"\330\001\n\023Execute_r"
-      "equest_msg\022#\n\010msg_base\030\001 \002(\0132\021.message.B"
-      "ase_msg\022\022\n\ncommand_id\030\002 \002(\005\022)\n\013action_ty"
-      "pe\030\003 \002(\0162\024.message.Action_type\022\017\n\007from_i"
-      "d\030\004 \002(\005\022\023\n\013destination\030\005 \002(\005\0227\n\022locate_i"
-      "nformation\030\006 \002(\0132\033.message.Locate_inform"
-      "ation\"~\n\024Execute_response_msg\022#\n\010msg_bas"
-      "e\030\001 \002(\0132\021.message.Base_msg\022\022\n\ncommand_id"
-      "\030\002 \002(\005\022\022\n\nerror_code\030\003 \002(\005\022\031\n\021error_desc"
-      "ription\030\004 \001(\t*\?\n\016Hardware_statu\022\013\n\007eNorm"
-      "al\020\000\022\t\n\005eBusy\020\001\022\t\n\005eMiss\020\002\022\n\n\006eError\020\003*#"
-      "\n\013Action_type\022\t\n\005ePark\020\000\022\t\n\005ePick\020\001"
+      "\0132\027.message.Carrier_status\"\331\001\n\023Execute_r"
+      "equest_msg\022$\n\010msg_info\030\001 \002(\0132\022.message.B"
+      "ase_info\022\022\n\ncommand_id\030\002 \002(\005\022)\n\013action_t"
+      "ype\030\003 \002(\0162\024.message.Action_type\022\017\n\007from_"
+      "id\030\004 \002(\005\022\023\n\013destination\030\005 \002(\005\0227\n\022locate_"
+      "information\030\006 \002(\0132\033.message.Locate_infor"
+      "mation\"\177\n\024Execute_response_msg\022$\n\010msg_in"
+      "fo\030\001 \002(\0132\022.message.Base_info\022\022\n\ncommand_"
+      "id\030\002 \002(\005\022\022\n\nerror_code\030\003 \002(\005\022\031\n\021error_de"
+      "scription\030\004 \001(\t*\?\n\016Hardware_statu\022\013\n\007eNo"
+      "rmal\020\000\022\t\n\005eBusy\020\001\022\t\n\005eMiss\020\002\022\n\n\006eError\020\003"
+      "*#\n\013Action_type\022\t\n\005ePark\020\000\022\t\n\005ePick\020\001"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 915);
+      descriptor, 917);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "hardware_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -1603,21 +1603,21 @@ void Harware_statu_msg::InternalSwap(Harware_statu_msg* other) {
 // ===================================================================
 
 void Execute_request_msg::InitAsDefaultInstance() {
-  ::message::_Execute_request_msg_default_instance_._instance.get_mutable()->msg_base_ = const_cast< ::message::Base_msg*>(
-      ::message::Base_msg::internal_default_instance());
+  ::message::_Execute_request_msg_default_instance_._instance.get_mutable()->msg_info_ = const_cast< ::message::Base_info*>(
+      ::message::Base_info::internal_default_instance());
   ::message::_Execute_request_msg_default_instance_._instance.get_mutable()->locate_information_ = const_cast< ::message::Locate_information*>(
       ::message::Locate_information::internal_default_instance());
 }
-void Execute_request_msg::clear_msg_base() {
-  if (msg_base_ != NULL) msg_base_->Clear();
-  clear_has_msg_base();
+void Execute_request_msg::clear_msg_info() {
+  if (msg_info_ != NULL) msg_info_->Clear();
+  clear_has_msg_info();
 }
 void Execute_request_msg::clear_locate_information() {
   if (locate_information_ != NULL) locate_information_->Clear();
   clear_has_locate_information();
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Execute_request_msg::kMsgBaseFieldNumber;
+const int Execute_request_msg::kMsgInfoFieldNumber;
 const int Execute_request_msg::kCommandIdFieldNumber;
 const int Execute_request_msg::kActionTypeFieldNumber;
 const int Execute_request_msg::kFromIdFieldNumber;
@@ -1639,10 +1639,10 @@ Execute_request_msg::Execute_request_msg(const Execute_request_msg& from)
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_msg_base()) {
-    msg_base_ = new ::message::Base_msg(*from.msg_base_);
+  if (from.has_msg_info()) {
+    msg_info_ = new ::message::Base_info(*from.msg_info_);
   } else {
-    msg_base_ = NULL;
+    msg_info_ = NULL;
   }
   if (from.has_locate_information()) {
     locate_information_ = new ::message::Locate_information(*from.locate_information_);
@@ -1657,9 +1657,9 @@ Execute_request_msg::Execute_request_msg(const Execute_request_msg& from)
 
 void Execute_request_msg::SharedCtor() {
   _cached_size_ = 0;
-  ::memset(&msg_base_, 0, static_cast<size_t>(
+  ::memset(&msg_info_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&destination_) -
-      reinterpret_cast<char*>(&msg_base_)) + sizeof(destination_));
+      reinterpret_cast<char*>(&msg_info_)) + sizeof(destination_));
 }
 
 Execute_request_msg::~Execute_request_msg() {
@@ -1668,7 +1668,7 @@ Execute_request_msg::~Execute_request_msg() {
 }
 
 void Execute_request_msg::SharedDtor() {
-  if (this != internal_default_instance()) delete msg_base_;
+  if (this != internal_default_instance()) delete msg_info_;
   if (this != internal_default_instance()) delete locate_information_;
 }
 
@@ -1704,8 +1704,8 @@ void Execute_request_msg::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 3u) {
     if (cached_has_bits & 0x00000001u) {
-      GOOGLE_DCHECK(msg_base_ != NULL);
-      msg_base_->Clear();
+      GOOGLE_DCHECK(msg_info_ != NULL);
+      msg_info_->Clear();
     }
     if (cached_has_bits & 0x00000002u) {
       GOOGLE_DCHECK(locate_information_ != NULL);
@@ -1731,12 +1731,12 @@ bool Execute_request_msg::MergePartialFromCodedStream(
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required .message.Base_msg msg_base = 1;
+      // required .message.Base_info msg_info = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_msg_base()));
+               input, mutable_msg_info()));
         } else {
           goto handle_unusual;
         }
@@ -1844,10 +1844,10 @@ void Execute_request_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info msg_info = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->msg_base_, output);
+      1, *this->msg_info_, output);
   }
 
   // required int32 command_id = 2;
@@ -1892,11 +1892,11 @@ void Execute_request_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info msg_info = 1;
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->msg_base_, deterministic, target);
+        1, *this->msg_info_, deterministic, target);
   }
 
   // required int32 command_id = 2;
@@ -1939,11 +1939,11 @@ size_t Execute_request_msg::RequiredFieldsByteSizeFallback() const {
 // @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Execute_request_msg)
   size_t total_size = 0;
 
-  if (has_msg_base()) {
-    // required .message.Base_msg msg_base = 1;
+  if (has_msg_info()) {
+    // required .message.Base_info msg_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->msg_info_);
   }
 
   if (has_locate_information()) {
@@ -1992,10 +1992,10 @@ size_t Execute_request_msg::ByteSizeLong() const {
         _internal_metadata_.unknown_fields());
   }
   if (((_has_bits_[0] & 0x0000003f) ^ 0x0000003f) == 0) {  // All required fields are present.
-    // required .message.Base_msg msg_base = 1;
+    // required .message.Base_info msg_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->msg_info_);
 
     // required .message.Locate_information locate_information = 6;
     total_size += 1 +
@@ -2056,7 +2056,7 @@ void Execute_request_msg::MergeFrom(const Execute_request_msg& from) {
   cached_has_bits = from._has_bits_[0];
   if (cached_has_bits & 63u) {
     if (cached_has_bits & 0x00000001u) {
-      mutable_msg_base()->::message::Base_msg::MergeFrom(from.msg_base());
+      mutable_msg_info()->::message::Base_info::MergeFrom(from.msg_info());
     }
     if (cached_has_bits & 0x00000002u) {
       mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
@@ -2093,8 +2093,8 @@ void Execute_request_msg::CopyFrom(const Execute_request_msg& from) {
 
 bool Execute_request_msg::IsInitialized() const {
   if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false;
-  if (has_msg_base()) {
-    if (!this->msg_base_->IsInitialized()) return false;
+  if (has_msg_info()) {
+    if (!this->msg_info_->IsInitialized()) return false;
   }
   return true;
 }
@@ -2105,7 +2105,7 @@ void Execute_request_msg::Swap(Execute_request_msg* other) {
 }
 void Execute_request_msg::InternalSwap(Execute_request_msg* other) {
   using std::swap;
-  swap(msg_base_, other->msg_base_);
+  swap(msg_info_, other->msg_info_);
   swap(locate_information_, other->locate_information_);
   swap(command_id_, other->command_id_);
   swap(action_type_, other->action_type_);
@@ -2125,15 +2125,15 @@ void Execute_request_msg::InternalSwap(Execute_request_msg* other) {
 // ===================================================================
 
 void Execute_response_msg::InitAsDefaultInstance() {
-  ::message::_Execute_response_msg_default_instance_._instance.get_mutable()->msg_base_ = const_cast< ::message::Base_msg*>(
-      ::message::Base_msg::internal_default_instance());
+  ::message::_Execute_response_msg_default_instance_._instance.get_mutable()->msg_info_ = const_cast< ::message::Base_info*>(
+      ::message::Base_info::internal_default_instance());
 }
-void Execute_response_msg::clear_msg_base() {
-  if (msg_base_ != NULL) msg_base_->Clear();
-  clear_has_msg_base();
+void Execute_response_msg::clear_msg_info() {
+  if (msg_info_ != NULL) msg_info_->Clear();
+  clear_has_msg_info();
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Execute_response_msg::kMsgBaseFieldNumber;
+const int Execute_response_msg::kMsgInfoFieldNumber;
 const int Execute_response_msg::kCommandIdFieldNumber;
 const int Execute_response_msg::kErrorCodeFieldNumber;
 const int Execute_response_msg::kErrorDescriptionFieldNumber;
@@ -2157,10 +2157,10 @@ Execute_response_msg::Execute_response_msg(const Execute_response_msg& from)
   if (from.has_error_description()) {
     error_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.error_description_);
   }
-  if (from.has_msg_base()) {
-    msg_base_ = new ::message::Base_msg(*from.msg_base_);
+  if (from.has_msg_info()) {
+    msg_info_ = new ::message::Base_info(*from.msg_info_);
   } else {
-    msg_base_ = NULL;
+    msg_info_ = NULL;
   }
   ::memcpy(&command_id_, &from.command_id_,
     static_cast<size_t>(reinterpret_cast<char*>(&error_code_) -
@@ -2171,9 +2171,9 @@ Execute_response_msg::Execute_response_msg(const Execute_response_msg& from)
 void Execute_response_msg::SharedCtor() {
   _cached_size_ = 0;
   error_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&msg_base_, 0, static_cast<size_t>(
+  ::memset(&msg_info_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&error_code_) -
-      reinterpret_cast<char*>(&msg_base_)) + sizeof(error_code_));
+      reinterpret_cast<char*>(&msg_info_)) + sizeof(error_code_));
 }
 
 Execute_response_msg::~Execute_response_msg() {
@@ -2183,7 +2183,7 @@ Execute_response_msg::~Execute_response_msg() {
 
 void Execute_response_msg::SharedDtor() {
   error_description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (this != internal_default_instance()) delete msg_base_;
+  if (this != internal_default_instance()) delete msg_info_;
 }
 
 void Execute_response_msg::SetCachedSize(int size) const {
@@ -2222,8 +2222,8 @@ void Execute_response_msg::Clear() {
       (*error_description_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000002u) {
-      GOOGLE_DCHECK(msg_base_ != NULL);
-      msg_base_->Clear();
+      GOOGLE_DCHECK(msg_info_ != NULL);
+      msg_info_->Clear();
     }
   }
   if (cached_has_bits & 12u) {
@@ -2245,12 +2245,12 @@ bool Execute_response_msg::MergePartialFromCodedStream(
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required .message.Base_msg msg_base = 1;
+      // required .message.Base_info msg_info = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_msg_base()));
+               input, mutable_msg_info()));
         } else {
           goto handle_unusual;
         }
@@ -2328,10 +2328,10 @@ void Execute_response_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info msg_info = 1;
   if (cached_has_bits & 0x00000002u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->msg_base_, output);
+      1, *this->msg_info_, output);
   }
 
   // required int32 command_id = 2;
@@ -2369,11 +2369,11 @@ void Execute_response_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info msg_info = 1;
   if (cached_has_bits & 0x00000002u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->msg_base_, deterministic, target);
+        1, *this->msg_info_, deterministic, target);
   }
 
   // required int32 command_id = 2;
@@ -2409,11 +2409,11 @@ size_t Execute_response_msg::RequiredFieldsByteSizeFallback() const {
 // @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Execute_response_msg)
   size_t total_size = 0;
 
-  if (has_msg_base()) {
-    // required .message.Base_msg msg_base = 1;
+  if (has_msg_info()) {
+    // required .message.Base_info msg_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->msg_info_);
   }
 
   if (has_command_id()) {
@@ -2442,10 +2442,10 @@ size_t Execute_response_msg::ByteSizeLong() const {
         _internal_metadata_.unknown_fields());
   }
   if (((_has_bits_[0] & 0x0000000e) ^ 0x0000000e) == 0) {  // All required fields are present.
-    // required .message.Base_msg msg_base = 1;
+    // required .message.Base_info msg_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->msg_info_);
 
     // required int32 command_id = 2;
     total_size += 1 +
@@ -2503,7 +2503,7 @@ void Execute_response_msg::MergeFrom(const Execute_response_msg& from) {
       error_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.error_description_);
     }
     if (cached_has_bits & 0x00000002u) {
-      mutable_msg_base()->::message::Base_msg::MergeFrom(from.msg_base());
+      mutable_msg_info()->::message::Base_info::MergeFrom(from.msg_info());
     }
     if (cached_has_bits & 0x00000004u) {
       command_id_ = from.command_id_;
@@ -2531,8 +2531,8 @@ void Execute_response_msg::CopyFrom(const Execute_response_msg& from) {
 
 bool Execute_response_msg::IsInitialized() const {
   if ((_has_bits_[0] & 0x0000000e) != 0x0000000e) return false;
-  if (has_msg_base()) {
-    if (!this->msg_base_->IsInitialized()) return false;
+  if (has_msg_info()) {
+    if (!this->msg_info_->IsInitialized()) return false;
   }
   return true;
 }
@@ -2544,7 +2544,7 @@ void Execute_response_msg::Swap(Execute_response_msg* other) {
 void Execute_response_msg::InternalSwap(Execute_response_msg* other) {
   using std::swap;
   error_description_.Swap(&other->error_description_);
-  swap(msg_base_, other->msg_base_);
+  swap(msg_info_, other->msg_info_);
   swap(command_id_, other->command_id_);
   swap(error_code_, other->error_code_);
   swap(_has_bits_[0], other->_has_bits_[0]);

+ 82 - 82
message/hardware_message.pb.h

@@ -657,14 +657,14 @@ class Execute_request_msg : public ::google::protobuf::Message /* @@protoc_inser
 
   // accessors -------------------------------------------------------
 
-  // required .message.Base_msg msg_base = 1;
-  bool has_msg_base() const;
-  void clear_msg_base();
-  static const int kMsgBaseFieldNumber = 1;
-  const ::message::Base_msg& msg_base() const;
-  ::message::Base_msg* release_msg_base();
-  ::message::Base_msg* mutable_msg_base();
-  void set_allocated_msg_base(::message::Base_msg* msg_base);
+  // required .message.Base_info msg_info = 1;
+  bool has_msg_info() const;
+  void clear_msg_info();
+  static const int kMsgInfoFieldNumber = 1;
+  const ::message::Base_info& msg_info() const;
+  ::message::Base_info* release_msg_info();
+  ::message::Base_info* mutable_msg_info();
+  void set_allocated_msg_info(::message::Base_info* msg_info);
 
   // required .message.Locate_information locate_information = 6;
   bool has_locate_information() const;
@@ -705,8 +705,8 @@ class Execute_request_msg : public ::google::protobuf::Message /* @@protoc_inser
 
   // @@protoc_insertion_point(class_scope:message.Execute_request_msg)
  private:
-  void set_has_msg_base();
-  void clear_has_msg_base();
+  void set_has_msg_info();
+  void clear_has_msg_info();
   void set_has_command_id();
   void clear_has_command_id();
   void set_has_action_type();
@@ -724,7 +724,7 @@ class Execute_request_msg : public ::google::protobuf::Message /* @@protoc_inser
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
-  ::message::Base_msg* msg_base_;
+  ::message::Base_info* msg_info_;
   ::message::Locate_information* locate_information_;
   ::google::protobuf::int32 command_id_;
   int action_type_;
@@ -839,14 +839,14 @@ class Execute_response_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::std::string* release_error_description();
   void set_allocated_error_description(::std::string* error_description);
 
-  // required .message.Base_msg msg_base = 1;
-  bool has_msg_base() const;
-  void clear_msg_base();
-  static const int kMsgBaseFieldNumber = 1;
-  const ::message::Base_msg& msg_base() const;
-  ::message::Base_msg* release_msg_base();
-  ::message::Base_msg* mutable_msg_base();
-  void set_allocated_msg_base(::message::Base_msg* msg_base);
+  // required .message.Base_info msg_info = 1;
+  bool has_msg_info() const;
+  void clear_msg_info();
+  static const int kMsgInfoFieldNumber = 1;
+  const ::message::Base_info& msg_info() const;
+  ::message::Base_info* release_msg_info();
+  ::message::Base_info* mutable_msg_info();
+  void set_allocated_msg_info(::message::Base_info* msg_info);
 
   // required int32 command_id = 2;
   bool has_command_id() const;
@@ -864,8 +864,8 @@ class Execute_response_msg : public ::google::protobuf::Message /* @@protoc_inse
 
   // @@protoc_insertion_point(class_scope:message.Execute_response_msg)
  private:
-  void set_has_msg_base();
-  void clear_has_msg_base();
+  void set_has_msg_info();
+  void clear_has_msg_info();
   void set_has_command_id();
   void clear_has_command_id();
   void set_has_error_code();
@@ -880,7 +880,7 @@ class Execute_response_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::internal::ArenaStringPtr error_description_;
-  ::message::Base_msg* msg_base_;
+  ::message::Base_info* msg_info_;
   ::google::protobuf::int32 command_id_;
   ::google::protobuf::int32 error_code_;
   friend struct ::protobuf_hardware_5fmessage_2eproto::TableStruct;
@@ -1358,54 +1358,54 @@ inline void Harware_statu_msg::set_allocated_carrier3_statu(::message::Carrier_s
 
 // Execute_request_msg
 
-// required .message.Base_msg msg_base = 1;
-inline bool Execute_request_msg::has_msg_base() const {
+// required .message.Base_info msg_info = 1;
+inline bool Execute_request_msg::has_msg_info() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Execute_request_msg::set_has_msg_base() {
+inline void Execute_request_msg::set_has_msg_info() {
   _has_bits_[0] |= 0x00000001u;
 }
-inline void Execute_request_msg::clear_has_msg_base() {
+inline void Execute_request_msg::clear_has_msg_info() {
   _has_bits_[0] &= ~0x00000001u;
 }
-inline const ::message::Base_msg& Execute_request_msg::msg_base() const {
-  const ::message::Base_msg* p = msg_base_;
-  // @@protoc_insertion_point(field_get:message.Execute_request_msg.msg_base)
-  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_msg*>(
-      &::message::_Base_msg_default_instance_);
-}
-inline ::message::Base_msg* Execute_request_msg::release_msg_base() {
-  // @@protoc_insertion_point(field_release:message.Execute_request_msg.msg_base)
-  clear_has_msg_base();
-  ::message::Base_msg* temp = msg_base_;
-  msg_base_ = NULL;
+inline const ::message::Base_info& Execute_request_msg::msg_info() const {
+  const ::message::Base_info* p = msg_info_;
+  // @@protoc_insertion_point(field_get:message.Execute_request_msg.msg_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_info*>(
+      &::message::_Base_info_default_instance_);
+}
+inline ::message::Base_info* Execute_request_msg::release_msg_info() {
+  // @@protoc_insertion_point(field_release:message.Execute_request_msg.msg_info)
+  clear_has_msg_info();
+  ::message::Base_info* temp = msg_info_;
+  msg_info_ = NULL;
   return temp;
 }
-inline ::message::Base_msg* Execute_request_msg::mutable_msg_base() {
-  set_has_msg_base();
-  if (msg_base_ == NULL) {
-    msg_base_ = new ::message::Base_msg;
+inline ::message::Base_info* Execute_request_msg::mutable_msg_info() {
+  set_has_msg_info();
+  if (msg_info_ == NULL) {
+    msg_info_ = new ::message::Base_info;
   }
-  // @@protoc_insertion_point(field_mutable:message.Execute_request_msg.msg_base)
-  return msg_base_;
+  // @@protoc_insertion_point(field_mutable:message.Execute_request_msg.msg_info)
+  return msg_info_;
 }
-inline void Execute_request_msg::set_allocated_msg_base(::message::Base_msg* msg_base) {
+inline void Execute_request_msg::set_allocated_msg_info(::message::Base_info* msg_info) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_base_);
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_info_);
   }
-  if (msg_base) {
+  if (msg_info) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      msg_base = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, msg_base, submessage_arena);
+      msg_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, msg_info, submessage_arena);
     }
-    set_has_msg_base();
+    set_has_msg_info();
   } else {
-    clear_has_msg_base();
+    clear_has_msg_info();
   }
-  msg_base_ = msg_base;
-  // @@protoc_insertion_point(field_set_allocated:message.Execute_request_msg.msg_base)
+  msg_info_ = msg_info;
+  // @@protoc_insertion_point(field_set_allocated:message.Execute_request_msg.msg_info)
 }
 
 // required int32 command_id = 2;
@@ -1559,54 +1559,54 @@ inline void Execute_request_msg::set_allocated_locate_information(::message::Loc
 
 // Execute_response_msg
 
-// required .message.Base_msg msg_base = 1;
-inline bool Execute_response_msg::has_msg_base() const {
+// required .message.Base_info msg_info = 1;
+inline bool Execute_response_msg::has_msg_info() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
 }
-inline void Execute_response_msg::set_has_msg_base() {
+inline void Execute_response_msg::set_has_msg_info() {
   _has_bits_[0] |= 0x00000002u;
 }
-inline void Execute_response_msg::clear_has_msg_base() {
+inline void Execute_response_msg::clear_has_msg_info() {
   _has_bits_[0] &= ~0x00000002u;
 }
-inline const ::message::Base_msg& Execute_response_msg::msg_base() const {
-  const ::message::Base_msg* p = msg_base_;
-  // @@protoc_insertion_point(field_get:message.Execute_response_msg.msg_base)
-  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_msg*>(
-      &::message::_Base_msg_default_instance_);
-}
-inline ::message::Base_msg* Execute_response_msg::release_msg_base() {
-  // @@protoc_insertion_point(field_release:message.Execute_response_msg.msg_base)
-  clear_has_msg_base();
-  ::message::Base_msg* temp = msg_base_;
-  msg_base_ = NULL;
+inline const ::message::Base_info& Execute_response_msg::msg_info() const {
+  const ::message::Base_info* p = msg_info_;
+  // @@protoc_insertion_point(field_get:message.Execute_response_msg.msg_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_info*>(
+      &::message::_Base_info_default_instance_);
+}
+inline ::message::Base_info* Execute_response_msg::release_msg_info() {
+  // @@protoc_insertion_point(field_release:message.Execute_response_msg.msg_info)
+  clear_has_msg_info();
+  ::message::Base_info* temp = msg_info_;
+  msg_info_ = NULL;
   return temp;
 }
-inline ::message::Base_msg* Execute_response_msg::mutable_msg_base() {
-  set_has_msg_base();
-  if (msg_base_ == NULL) {
-    msg_base_ = new ::message::Base_msg;
+inline ::message::Base_info* Execute_response_msg::mutable_msg_info() {
+  set_has_msg_info();
+  if (msg_info_ == NULL) {
+    msg_info_ = new ::message::Base_info;
   }
-  // @@protoc_insertion_point(field_mutable:message.Execute_response_msg.msg_base)
-  return msg_base_;
+  // @@protoc_insertion_point(field_mutable:message.Execute_response_msg.msg_info)
+  return msg_info_;
 }
-inline void Execute_response_msg::set_allocated_msg_base(::message::Base_msg* msg_base) {
+inline void Execute_response_msg::set_allocated_msg_info(::message::Base_info* msg_info) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_base_);
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_info_);
   }
-  if (msg_base) {
+  if (msg_info) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      msg_base = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, msg_base, submessage_arena);
+      msg_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, msg_info, submessage_arena);
     }
-    set_has_msg_base();
+    set_has_msg_info();
   } else {
-    clear_has_msg_base();
+    clear_has_msg_info();
   }
-  msg_base_ = msg_base;
-  // @@protoc_insertion_point(field_set_allocated:message.Execute_response_msg.msg_base)
+  msg_info_ = msg_info;
+  // @@protoc_insertion_point(field_set_allocated:message.Execute_response_msg.msg_info)
 }
 
 // required int32 command_id = 2;

+ 2 - 2
message/hardware_message.proto

@@ -48,7 +48,7 @@ enum Action_type
 //执行搬运请求
 message Execute_request_msg
 {
-    required Base_msg                   msg_base=1;         //消息类型                         //消息类型
+    required Base_info                   msg_info=1;         //消息类型                         //消息类型
     required int32                      command_id=2;                   //指令唯一标识符id
     required Action_type                action_type=3;
     required int32                      from_id=4;
@@ -59,7 +59,7 @@ message Execute_request_msg
 //搬运动作执行完成后反馈结果
 message Execute_response_msg
 {
-    required Base_msg                   msg_base=1;                     //消息类型
+    required Base_info                   msg_info=1;                    //消息类型
     required int32                      command_id=2;                   //指令唯一标识符id
     required int32                      error_code=3;
     optional string                     error_description=4;

+ 122 - 122
message/measure_message.pb.cc

@@ -45,7 +45,7 @@ void InitDefaultsMeasure_status_msgImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
   {
@@ -69,7 +69,7 @@ void InitDefaultsMeasure_request_msgImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   {
     void* ptr = &::message::_Measure_request_msg_default_instance_;
     new (ptr) ::message::Measure_request_msg();
@@ -91,7 +91,7 @@ void InitDefaultsMeasure_response_msgImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
   {
@@ -116,7 +116,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, msg_type_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, base_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, laser_manager_status_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, laser_statu_vector_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, locate_manager_status_),
@@ -133,7 +133,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_request_msg, msg_base_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_request_msg, base_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_request_msg, command_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_request_msg, terminal_id_),
   0,
@@ -144,7 +144,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_response_msg, msg_base_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_response_msg, base_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_response_msg, command_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_response_msg, terminal_id_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_response_msg, locate_information_),
@@ -190,37 +190,37 @@ void AddDescriptorsImpl() {
   InitDefaults();
   static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
       "\n\025measure_message.proto\022\007message\032\022messag"
-      "e_base.proto\"\330\002\n\022Measure_status_msg\022#\n\010m"
-      "sg_type\030\001 \002(\0132\021.message.Base_msg\022;\n\024lase"
-      "r_manager_status\030\002 \002(\0162\035.message.Laser_m"
-      "anager_status\0220\n\022laser_statu_vector\030\003 \003("
-      "\0162\024.message.Laser_statu\022=\n\025locate_manage"
-      "r_status\030\004 \002(\0162\036.message.Locate_manager_"
-      "status\022@\n\033locate_information_realtime\030\005 "
-      "\001(\0132\033.message.Locate_information\022-\n\rerro"
-      "r_manager\030\006 \002(\0132\026.message.Error_manager\""
-      "c\n\023Measure_request_msg\022#\n\010msg_base\030\001 \002(\013"
-      "2\021.message.Base_msg\022\022\n\ncommand_id\030\002 \002(\005\022"
-      "\023\n\013terminal_id\030\003 \002(\005\"\314\001\n\024Measure_respons"
-      "e_msg\022#\n\010msg_base\030\001 \002(\0132\021.message.Base_m"
-      "sg\022\022\n\ncommand_id\030\002 \002(\005\022\023\n\013terminal_id\030\003 "
-      "\002(\005\0227\n\022locate_information\030\004 \001(\0132\033.messag"
-      "e.Locate_information\022-\n\rerror_manager\030\005 "
-      "\002(\0132\026.message.Error_manager*\237\001\n\024Laser_ma"
-      "nager_status\022\030\n\024LASER_MANAGER_UNKNOW\020\000\022\027"
-      "\n\023LASER_MANAGER_READY\020\001\022\035\n\031LASER_MANAGER"
-      "_ISSUED_TASK\020\002\022\034\n\030LASER_MANAGER_WAIT_REP"
-      "LY\020\003\022\027\n\023LASER_MANAGER_FAULT\020\004*U\n\013Laser_s"
-      "tatu\022\024\n\020LASER_DISCONNECT\020\000\022\017\n\013LASER_READ"
-      "Y\020\001\022\016\n\nLASER_BUSY\020\002\022\017\n\013LASER_FAULT\020\003*\261\001\n"
-      "\025Locate_manager_status\022\031\n\025LOCATE_MANAGER"
-      "_UNKNOW\020\000\022\030\n\024LOCATE_MANAGER_READY\020\001\022\027\n\023L"
-      "OCATE_MANAGER_SIFT\020\002\022\026\n\022LOCATE_MANAGER_C"
-      "AR\020\003\022\030\n\024LOCATE_MANAGER_WHEEL\020\004\022\030\n\024LOCATE"
-      "_MANAGER_FAULT\020\005"
+      "e_base.proto\"\332\002\n\022Measure_status_msg\022%\n\tb"
+      "ase_info\030\001 \002(\0132\022.message.Base_info\022;\n\024la"
+      "ser_manager_status\030\002 \002(\0162\035.message.Laser"
+      "_manager_status\0220\n\022laser_statu_vector\030\003 "
+      "\003(\0162\024.message.Laser_statu\022=\n\025locate_mana"
+      "ger_status\030\004 \002(\0162\036.message.Locate_manage"
+      "r_status\022@\n\033locate_information_realtime\030"
+      "\005 \001(\0132\033.message.Locate_information\022-\n\rer"
+      "ror_manager\030\006 \002(\0132\026.message.Error_manage"
+      "r\"e\n\023Measure_request_msg\022%\n\tbase_info\030\001 "
+      "\002(\0132\022.message.Base_info\022\022\n\ncommand_id\030\002 "
+      "\002(\005\022\023\n\013terminal_id\030\003 \002(\005\"\316\001\n\024Measure_res"
+      "ponse_msg\022%\n\tbase_info\030\001 \002(\0132\022.message.B"
+      "ase_info\022\022\n\ncommand_id\030\002 \002(\005\022\023\n\013terminal"
+      "_id\030\003 \002(\005\0227\n\022locate_information\030\004 \001(\0132\033."
+      "message.Locate_information\022-\n\rerror_mana"
+      "ger\030\005 \002(\0132\026.message.Error_manager*\237\001\n\024La"
+      "ser_manager_status\022\030\n\024LASER_MANAGER_UNKN"
+      "OW\020\000\022\027\n\023LASER_MANAGER_READY\020\001\022\035\n\031LASER_M"
+      "ANAGER_ISSUED_TASK\020\002\022\034\n\030LASER_MANAGER_WA"
+      "IT_REPLY\020\003\022\027\n\023LASER_MANAGER_FAULT\020\004*U\n\013L"
+      "aser_statu\022\024\n\020LASER_DISCONNECT\020\000\022\017\n\013LASE"
+      "R_READY\020\001\022\016\n\nLASER_BUSY\020\002\022\017\n\013LASER_FAULT"
+      "\020\003*\261\001\n\025Locate_manager_status\022\031\n\025LOCATE_M"
+      "ANAGER_UNKNOW\020\000\022\030\n\024LOCATE_MANAGER_READY\020"
+      "\001\022\027\n\023LOCATE_MANAGER_SIFT\020\002\022\026\n\022LOCATE_MAN"
+      "AGER_CAR\020\003\022\030\n\024LOCATE_MANAGER_WHEEL\020\004\022\030\n\024"
+      "LOCATE_MANAGER_FAULT\020\005"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 1136);
+      descriptor, 1142);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "measure_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -293,16 +293,16 @@ bool Locate_manager_status_IsValid(int value) {
 // ===================================================================
 
 void Measure_status_msg::InitAsDefaultInstance() {
-  ::message::_Measure_status_msg_default_instance_._instance.get_mutable()->msg_type_ = const_cast< ::message::Base_msg*>(
-      ::message::Base_msg::internal_default_instance());
+  ::message::_Measure_status_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
+      ::message::Base_info::internal_default_instance());
   ::message::_Measure_status_msg_default_instance_._instance.get_mutable()->locate_information_realtime_ = const_cast< ::message::Locate_information*>(
       ::message::Locate_information::internal_default_instance());
   ::message::_Measure_status_msg_default_instance_._instance.get_mutable()->error_manager_ = const_cast< ::message::Error_manager*>(
       ::message::Error_manager::internal_default_instance());
 }
-void Measure_status_msg::clear_msg_type() {
-  if (msg_type_ != NULL) msg_type_->Clear();
-  clear_has_msg_type();
+void Measure_status_msg::clear_base_info() {
+  if (base_info_ != NULL) base_info_->Clear();
+  clear_has_base_info();
 }
 void Measure_status_msg::clear_locate_information_realtime() {
   if (locate_information_realtime_ != NULL) locate_information_realtime_->Clear();
@@ -313,7 +313,7 @@ void Measure_status_msg::clear_error_manager() {
   clear_has_error_manager();
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Measure_status_msg::kMsgTypeFieldNumber;
+const int Measure_status_msg::kBaseInfoFieldNumber;
 const int Measure_status_msg::kLaserManagerStatusFieldNumber;
 const int Measure_status_msg::kLaserStatuVectorFieldNumber;
 const int Measure_status_msg::kLocateManagerStatusFieldNumber;
@@ -336,10 +336,10 @@ Measure_status_msg::Measure_status_msg(const Measure_status_msg& from)
       _cached_size_(0),
       laser_statu_vector_(from.laser_statu_vector_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_msg_type()) {
-    msg_type_ = new ::message::Base_msg(*from.msg_type_);
+  if (from.has_base_info()) {
+    base_info_ = new ::message::Base_info(*from.base_info_);
   } else {
-    msg_type_ = NULL;
+    base_info_ = NULL;
   }
   if (from.has_locate_information_realtime()) {
     locate_information_realtime_ = new ::message::Locate_information(*from.locate_information_realtime_);
@@ -359,9 +359,9 @@ Measure_status_msg::Measure_status_msg(const Measure_status_msg& from)
 
 void Measure_status_msg::SharedCtor() {
   _cached_size_ = 0;
-  ::memset(&msg_type_, 0, static_cast<size_t>(
+  ::memset(&base_info_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&locate_manager_status_) -
-      reinterpret_cast<char*>(&msg_type_)) + sizeof(locate_manager_status_));
+      reinterpret_cast<char*>(&base_info_)) + sizeof(locate_manager_status_));
 }
 
 Measure_status_msg::~Measure_status_msg() {
@@ -370,7 +370,7 @@ Measure_status_msg::~Measure_status_msg() {
 }
 
 void Measure_status_msg::SharedDtor() {
-  if (this != internal_default_instance()) delete msg_type_;
+  if (this != internal_default_instance()) delete base_info_;
   if (this != internal_default_instance()) delete locate_information_realtime_;
   if (this != internal_default_instance()) delete error_manager_;
 }
@@ -408,8 +408,8 @@ void Measure_status_msg::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
-      GOOGLE_DCHECK(msg_type_ != NULL);
-      msg_type_->Clear();
+      GOOGLE_DCHECK(base_info_ != NULL);
+      base_info_->Clear();
     }
     if (cached_has_bits & 0x00000002u) {
       GOOGLE_DCHECK(locate_information_realtime_ != NULL);
@@ -439,12 +439,12 @@ bool Measure_status_msg::MergePartialFromCodedStream(
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required .message.Base_msg msg_type = 1;
+      // required .message.Base_info base_info = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_msg_type()));
+               input, mutable_base_info()));
         } else {
           goto handle_unusual;
         }
@@ -571,10 +571,10 @@ void Measure_status_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_type = 1;
+  // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->msg_type_, output);
+      1, *this->base_info_, output);
   }
 
   // required .message.Laser_manager_status laser_manager_status = 2;
@@ -622,11 +622,11 @@ void Measure_status_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_type = 1;
+  // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->msg_type_, deterministic, target);
+        1, *this->base_info_, deterministic, target);
   }
 
   // required .message.Laser_manager_status laser_manager_status = 2;
@@ -671,11 +671,11 @@ size_t Measure_status_msg::RequiredFieldsByteSizeFallback() const {
 // @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Measure_status_msg)
   size_t total_size = 0;
 
-  if (has_msg_type()) {
-    // required .message.Base_msg msg_type = 1;
+  if (has_base_info()) {
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_type_);
+        *this->base_info_);
   }
 
   if (has_error_manager()) {
@@ -709,10 +709,10 @@ size_t Measure_status_msg::ByteSizeLong() const {
         _internal_metadata_.unknown_fields());
   }
   if (((_has_bits_[0] & 0x0000001d) ^ 0x0000001d) == 0) {  // All required fields are present.
-    // required .message.Base_msg msg_type = 1;
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_type_);
+        *this->base_info_);
 
     // required .message.Error_manager error_manager = 6;
     total_size += 1 +
@@ -780,7 +780,7 @@ void Measure_status_msg::MergeFrom(const Measure_status_msg& from) {
   cached_has_bits = from._has_bits_[0];
   if (cached_has_bits & 31u) {
     if (cached_has_bits & 0x00000001u) {
-      mutable_msg_type()->::message::Base_msg::MergeFrom(from.msg_type());
+      mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     if (cached_has_bits & 0x00000002u) {
       mutable_locate_information_realtime()->::message::Locate_information::MergeFrom(from.locate_information_realtime());
@@ -814,8 +814,8 @@ void Measure_status_msg::CopyFrom(const Measure_status_msg& from) {
 
 bool Measure_status_msg::IsInitialized() const {
   if ((_has_bits_[0] & 0x0000001d) != 0x0000001d) return false;
-  if (has_msg_type()) {
-    if (!this->msg_type_->IsInitialized()) return false;
+  if (has_base_info()) {
+    if (!this->base_info_->IsInitialized()) return false;
   }
   if (has_error_manager()) {
     if (!this->error_manager_->IsInitialized()) return false;
@@ -830,7 +830,7 @@ void Measure_status_msg::Swap(Measure_status_msg* other) {
 void Measure_status_msg::InternalSwap(Measure_status_msg* other) {
   using std::swap;
   laser_statu_vector_.InternalSwap(&other->laser_statu_vector_);
-  swap(msg_type_, other->msg_type_);
+  swap(base_info_, other->base_info_);
   swap(locate_information_realtime_, other->locate_information_realtime_);
   swap(error_manager_, other->error_manager_);
   swap(laser_manager_status_, other->laser_manager_status_);
@@ -849,15 +849,15 @@ void Measure_status_msg::InternalSwap(Measure_status_msg* other) {
 // ===================================================================
 
 void Measure_request_msg::InitAsDefaultInstance() {
-  ::message::_Measure_request_msg_default_instance_._instance.get_mutable()->msg_base_ = const_cast< ::message::Base_msg*>(
-      ::message::Base_msg::internal_default_instance());
+  ::message::_Measure_request_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
+      ::message::Base_info::internal_default_instance());
 }
-void Measure_request_msg::clear_msg_base() {
-  if (msg_base_ != NULL) msg_base_->Clear();
-  clear_has_msg_base();
+void Measure_request_msg::clear_base_info() {
+  if (base_info_ != NULL) base_info_->Clear();
+  clear_has_base_info();
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Measure_request_msg::kMsgBaseFieldNumber;
+const int Measure_request_msg::kBaseInfoFieldNumber;
 const int Measure_request_msg::kCommandIdFieldNumber;
 const int Measure_request_msg::kTerminalIdFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
@@ -876,10 +876,10 @@ Measure_request_msg::Measure_request_msg(const Measure_request_msg& from)
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_msg_base()) {
-    msg_base_ = new ::message::Base_msg(*from.msg_base_);
+  if (from.has_base_info()) {
+    base_info_ = new ::message::Base_info(*from.base_info_);
   } else {
-    msg_base_ = NULL;
+    base_info_ = NULL;
   }
   ::memcpy(&command_id_, &from.command_id_,
     static_cast<size_t>(reinterpret_cast<char*>(&terminal_id_) -
@@ -889,9 +889,9 @@ Measure_request_msg::Measure_request_msg(const Measure_request_msg& from)
 
 void Measure_request_msg::SharedCtor() {
   _cached_size_ = 0;
-  ::memset(&msg_base_, 0, static_cast<size_t>(
+  ::memset(&base_info_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&terminal_id_) -
-      reinterpret_cast<char*>(&msg_base_)) + sizeof(terminal_id_));
+      reinterpret_cast<char*>(&base_info_)) + sizeof(terminal_id_));
 }
 
 Measure_request_msg::~Measure_request_msg() {
@@ -900,7 +900,7 @@ Measure_request_msg::~Measure_request_msg() {
 }
 
 void Measure_request_msg::SharedDtor() {
-  if (this != internal_default_instance()) delete msg_base_;
+  if (this != internal_default_instance()) delete base_info_;
 }
 
 void Measure_request_msg::SetCachedSize(int size) const {
@@ -934,8 +934,8 @@ void Measure_request_msg::Clear() {
 
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 0x00000001u) {
-    GOOGLE_DCHECK(msg_base_ != NULL);
-    msg_base_->Clear();
+    GOOGLE_DCHECK(base_info_ != NULL);
+    base_info_->Clear();
   }
   if (cached_has_bits & 6u) {
     ::memset(&command_id_, 0, static_cast<size_t>(
@@ -956,12 +956,12 @@ bool Measure_request_msg::MergePartialFromCodedStream(
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required .message.Base_msg msg_base = 1;
+      // required .message.Base_info base_info = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_msg_base()));
+               input, mutable_base_info()));
         } else {
           goto handle_unusual;
         }
@@ -1023,10 +1023,10 @@ void Measure_request_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->msg_base_, output);
+      1, *this->base_info_, output);
   }
 
   // required int32 command_id = 2;
@@ -1054,11 +1054,11 @@ void Measure_request_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->msg_base_, deterministic, target);
+        1, *this->base_info_, deterministic, target);
   }
 
   // required int32 command_id = 2;
@@ -1083,11 +1083,11 @@ size_t Measure_request_msg::RequiredFieldsByteSizeFallback() const {
 // @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Measure_request_msg)
   size_t total_size = 0;
 
-  if (has_msg_base()) {
-    // required .message.Base_msg msg_base = 1;
+  if (has_base_info()) {
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->base_info_);
   }
 
   if (has_command_id()) {
@@ -1116,10 +1116,10 @@ size_t Measure_request_msg::ByteSizeLong() const {
         _internal_metadata_.unknown_fields());
   }
   if (((_has_bits_[0] & 0x00000007) ^ 0x00000007) == 0) {  // All required fields are present.
-    // required .message.Base_msg msg_base = 1;
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->base_info_);
 
     // required int32 command_id = 2;
     total_size += 1 +
@@ -1166,7 +1166,7 @@ void Measure_request_msg::MergeFrom(const Measure_request_msg& from) {
   cached_has_bits = from._has_bits_[0];
   if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
-      mutable_msg_base()->::message::Base_msg::MergeFrom(from.msg_base());
+      mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     if (cached_has_bits & 0x00000002u) {
       command_id_ = from.command_id_;
@@ -1194,8 +1194,8 @@ void Measure_request_msg::CopyFrom(const Measure_request_msg& from) {
 
 bool Measure_request_msg::IsInitialized() const {
   if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
-  if (has_msg_base()) {
-    if (!this->msg_base_->IsInitialized()) return false;
+  if (has_base_info()) {
+    if (!this->base_info_->IsInitialized()) return false;
   }
   return true;
 }
@@ -1206,7 +1206,7 @@ void Measure_request_msg::Swap(Measure_request_msg* other) {
 }
 void Measure_request_msg::InternalSwap(Measure_request_msg* other) {
   using std::swap;
-  swap(msg_base_, other->msg_base_);
+  swap(base_info_, other->base_info_);
   swap(command_id_, other->command_id_);
   swap(terminal_id_, other->terminal_id_);
   swap(_has_bits_[0], other->_has_bits_[0]);
@@ -1223,16 +1223,16 @@ void Measure_request_msg::InternalSwap(Measure_request_msg* other) {
 // ===================================================================
 
 void Measure_response_msg::InitAsDefaultInstance() {
-  ::message::_Measure_response_msg_default_instance_._instance.get_mutable()->msg_base_ = const_cast< ::message::Base_msg*>(
-      ::message::Base_msg::internal_default_instance());
+  ::message::_Measure_response_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
+      ::message::Base_info::internal_default_instance());
   ::message::_Measure_response_msg_default_instance_._instance.get_mutable()->locate_information_ = const_cast< ::message::Locate_information*>(
       ::message::Locate_information::internal_default_instance());
   ::message::_Measure_response_msg_default_instance_._instance.get_mutable()->error_manager_ = const_cast< ::message::Error_manager*>(
       ::message::Error_manager::internal_default_instance());
 }
-void Measure_response_msg::clear_msg_base() {
-  if (msg_base_ != NULL) msg_base_->Clear();
-  clear_has_msg_base();
+void Measure_response_msg::clear_base_info() {
+  if (base_info_ != NULL) base_info_->Clear();
+  clear_has_base_info();
 }
 void Measure_response_msg::clear_locate_information() {
   if (locate_information_ != NULL) locate_information_->Clear();
@@ -1243,7 +1243,7 @@ void Measure_response_msg::clear_error_manager() {
   clear_has_error_manager();
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Measure_response_msg::kMsgBaseFieldNumber;
+const int Measure_response_msg::kBaseInfoFieldNumber;
 const int Measure_response_msg::kCommandIdFieldNumber;
 const int Measure_response_msg::kTerminalIdFieldNumber;
 const int Measure_response_msg::kLocateInformationFieldNumber;
@@ -1264,10 +1264,10 @@ Measure_response_msg::Measure_response_msg(const Measure_response_msg& from)
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_msg_base()) {
-    msg_base_ = new ::message::Base_msg(*from.msg_base_);
+  if (from.has_base_info()) {
+    base_info_ = new ::message::Base_info(*from.base_info_);
   } else {
-    msg_base_ = NULL;
+    base_info_ = NULL;
   }
   if (from.has_locate_information()) {
     locate_information_ = new ::message::Locate_information(*from.locate_information_);
@@ -1287,9 +1287,9 @@ Measure_response_msg::Measure_response_msg(const Measure_response_msg& from)
 
 void Measure_response_msg::SharedCtor() {
   _cached_size_ = 0;
-  ::memset(&msg_base_, 0, static_cast<size_t>(
+  ::memset(&base_info_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&terminal_id_) -
-      reinterpret_cast<char*>(&msg_base_)) + sizeof(terminal_id_));
+      reinterpret_cast<char*>(&base_info_)) + sizeof(terminal_id_));
 }
 
 Measure_response_msg::~Measure_response_msg() {
@@ -1298,7 +1298,7 @@ Measure_response_msg::~Measure_response_msg() {
 }
 
 void Measure_response_msg::SharedDtor() {
-  if (this != internal_default_instance()) delete msg_base_;
+  if (this != internal_default_instance()) delete base_info_;
   if (this != internal_default_instance()) delete locate_information_;
   if (this != internal_default_instance()) delete error_manager_;
 }
@@ -1335,8 +1335,8 @@ void Measure_response_msg::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
-      GOOGLE_DCHECK(msg_base_ != NULL);
-      msg_base_->Clear();
+      GOOGLE_DCHECK(base_info_ != NULL);
+      base_info_->Clear();
     }
     if (cached_has_bits & 0x00000002u) {
       GOOGLE_DCHECK(locate_information_ != NULL);
@@ -1366,12 +1366,12 @@ bool Measure_response_msg::MergePartialFromCodedStream(
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required .message.Base_msg msg_base = 1;
+      // required .message.Base_info base_info = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_msg_base()));
+               input, mutable_base_info()));
         } else {
           goto handle_unusual;
         }
@@ -1457,10 +1457,10 @@ void Measure_response_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->msg_base_, output);
+      1, *this->base_info_, output);
   }
 
   // required int32 command_id = 2;
@@ -1500,11 +1500,11 @@ void Measure_response_msg::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .message.Base_msg msg_base = 1;
+  // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->msg_base_, deterministic, target);
+        1, *this->base_info_, deterministic, target);
   }
 
   // required int32 command_id = 2;
@@ -1543,11 +1543,11 @@ size_t Measure_response_msg::RequiredFieldsByteSizeFallback() const {
 // @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Measure_response_msg)
   size_t total_size = 0;
 
-  if (has_msg_base()) {
-    // required .message.Base_msg msg_base = 1;
+  if (has_base_info()) {
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->base_info_);
   }
 
   if (has_error_manager()) {
@@ -1583,10 +1583,10 @@ size_t Measure_response_msg::ByteSizeLong() const {
         _internal_metadata_.unknown_fields());
   }
   if (((_has_bits_[0] & 0x0000001d) ^ 0x0000001d) == 0) {  // All required fields are present.
-    // required .message.Base_msg msg_base = 1;
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->msg_base_);
+        *this->base_info_);
 
     // required .message.Error_manager error_manager = 5;
     total_size += 1 +
@@ -1645,7 +1645,7 @@ void Measure_response_msg::MergeFrom(const Measure_response_msg& from) {
   cached_has_bits = from._has_bits_[0];
   if (cached_has_bits & 31u) {
     if (cached_has_bits & 0x00000001u) {
-      mutable_msg_base()->::message::Base_msg::MergeFrom(from.msg_base());
+      mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     if (cached_has_bits & 0x00000002u) {
       mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
@@ -1679,8 +1679,8 @@ void Measure_response_msg::CopyFrom(const Measure_response_msg& from) {
 
 bool Measure_response_msg::IsInitialized() const {
   if ((_has_bits_[0] & 0x0000001d) != 0x0000001d) return false;
-  if (has_msg_base()) {
-    if (!this->msg_base_->IsInitialized()) return false;
+  if (has_base_info()) {
+    if (!this->base_info_->IsInitialized()) return false;
   }
   if (has_error_manager()) {
     if (!this->error_manager_->IsInitialized()) return false;
@@ -1694,7 +1694,7 @@ void Measure_response_msg::Swap(Measure_response_msg* other) {
 }
 void Measure_response_msg::InternalSwap(Measure_response_msg* other) {
   using std::swap;
-  swap(msg_base_, other->msg_base_);
+  swap(base_info_, other->base_info_);
   swap(locate_information_, other->locate_information_);
   swap(error_manager_, other->error_manager_);
   swap(command_id_, other->command_id_);

+ 123 - 123
message/measure_message.pb.h

@@ -236,14 +236,14 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   const ::google::protobuf::RepeatedField<int>& laser_statu_vector() const;
   ::google::protobuf::RepeatedField<int>* mutable_laser_statu_vector();
 
-  // required .message.Base_msg msg_type = 1;
-  bool has_msg_type() const;
-  void clear_msg_type();
-  static const int kMsgTypeFieldNumber = 1;
-  const ::message::Base_msg& msg_type() const;
-  ::message::Base_msg* release_msg_type();
-  ::message::Base_msg* mutable_msg_type();
-  void set_allocated_msg_type(::message::Base_msg* msg_type);
+  // required .message.Base_info base_info = 1;
+  bool has_base_info() const;
+  void clear_base_info();
+  static const int kBaseInfoFieldNumber = 1;
+  const ::message::Base_info& base_info() const;
+  ::message::Base_info* release_base_info();
+  ::message::Base_info* mutable_base_info();
+  void set_allocated_base_info(::message::Base_info* base_info);
 
   // optional .message.Locate_information locate_information_realtime = 5;
   bool has_locate_information_realtime() const;
@@ -279,8 +279,8 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
 
   // @@protoc_insertion_point(class_scope:message.Measure_status_msg)
  private:
-  void set_has_msg_type();
-  void clear_has_msg_type();
+  void set_has_base_info();
+  void clear_has_base_info();
   void set_has_laser_manager_status();
   void clear_has_laser_manager_status();
   void set_has_locate_manager_status();
@@ -297,7 +297,7 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::RepeatedField<int> laser_statu_vector_;
-  ::message::Base_msg* msg_type_;
+  ::message::Base_info* base_info_;
   ::message::Locate_information* locate_information_realtime_;
   ::message::Error_manager* error_manager_;
   int laser_manager_status_;
@@ -396,14 +396,14 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
 
   // accessors -------------------------------------------------------
 
-  // required .message.Base_msg msg_base = 1;
-  bool has_msg_base() const;
-  void clear_msg_base();
-  static const int kMsgBaseFieldNumber = 1;
-  const ::message::Base_msg& msg_base() const;
-  ::message::Base_msg* release_msg_base();
-  ::message::Base_msg* mutable_msg_base();
-  void set_allocated_msg_base(::message::Base_msg* msg_base);
+  // required .message.Base_info base_info = 1;
+  bool has_base_info() const;
+  void clear_base_info();
+  static const int kBaseInfoFieldNumber = 1;
+  const ::message::Base_info& base_info() const;
+  ::message::Base_info* release_base_info();
+  ::message::Base_info* mutable_base_info();
+  void set_allocated_base_info(::message::Base_info* base_info);
 
   // required int32 command_id = 2;
   bool has_command_id() const;
@@ -421,8 +421,8 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
 
   // @@protoc_insertion_point(class_scope:message.Measure_request_msg)
  private:
-  void set_has_msg_base();
-  void clear_has_msg_base();
+  void set_has_base_info();
+  void clear_has_base_info();
   void set_has_command_id();
   void clear_has_command_id();
   void set_has_terminal_id();
@@ -434,7 +434,7 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
-  ::message::Base_msg* msg_base_;
+  ::message::Base_info* base_info_;
   ::google::protobuf::int32 command_id_;
   ::google::protobuf::int32 terminal_id_;
   friend struct ::protobuf_measure_5fmessage_2eproto::TableStruct;
@@ -531,14 +531,14 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
 
   // accessors -------------------------------------------------------
 
-  // required .message.Base_msg msg_base = 1;
-  bool has_msg_base() const;
-  void clear_msg_base();
-  static const int kMsgBaseFieldNumber = 1;
-  const ::message::Base_msg& msg_base() const;
-  ::message::Base_msg* release_msg_base();
-  ::message::Base_msg* mutable_msg_base();
-  void set_allocated_msg_base(::message::Base_msg* msg_base);
+  // required .message.Base_info base_info = 1;
+  bool has_base_info() const;
+  void clear_base_info();
+  static const int kBaseInfoFieldNumber = 1;
+  const ::message::Base_info& base_info() const;
+  ::message::Base_info* release_base_info();
+  ::message::Base_info* mutable_base_info();
+  void set_allocated_base_info(::message::Base_info* base_info);
 
   // optional .message.Locate_information locate_information = 4;
   bool has_locate_information() const;
@@ -574,8 +574,8 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
 
   // @@protoc_insertion_point(class_scope:message.Measure_response_msg)
  private:
-  void set_has_msg_base();
-  void clear_has_msg_base();
+  void set_has_base_info();
+  void clear_has_base_info();
   void set_has_command_id();
   void clear_has_command_id();
   void set_has_terminal_id();
@@ -591,7 +591,7 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
-  ::message::Base_msg* msg_base_;
+  ::message::Base_info* base_info_;
   ::message::Locate_information* locate_information_;
   ::message::Error_manager* error_manager_;
   ::google::protobuf::int32 command_id_;
@@ -610,54 +610,54 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
 #endif  // __GNUC__
 // Measure_status_msg
 
-// required .message.Base_msg msg_type = 1;
-inline bool Measure_status_msg::has_msg_type() const {
+// required .message.Base_info base_info = 1;
+inline bool Measure_status_msg::has_base_info() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Measure_status_msg::set_has_msg_type() {
+inline void Measure_status_msg::set_has_base_info() {
   _has_bits_[0] |= 0x00000001u;
 }
-inline void Measure_status_msg::clear_has_msg_type() {
+inline void Measure_status_msg::clear_has_base_info() {
   _has_bits_[0] &= ~0x00000001u;
 }
-inline const ::message::Base_msg& Measure_status_msg::msg_type() const {
-  const ::message::Base_msg* p = msg_type_;
-  // @@protoc_insertion_point(field_get:message.Measure_status_msg.msg_type)
-  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_msg*>(
-      &::message::_Base_msg_default_instance_);
-}
-inline ::message::Base_msg* Measure_status_msg::release_msg_type() {
-  // @@protoc_insertion_point(field_release:message.Measure_status_msg.msg_type)
-  clear_has_msg_type();
-  ::message::Base_msg* temp = msg_type_;
-  msg_type_ = NULL;
+inline const ::message::Base_info& Measure_status_msg::base_info() const {
+  const ::message::Base_info* p = base_info_;
+  // @@protoc_insertion_point(field_get:message.Measure_status_msg.base_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_info*>(
+      &::message::_Base_info_default_instance_);
+}
+inline ::message::Base_info* Measure_status_msg::release_base_info() {
+  // @@protoc_insertion_point(field_release:message.Measure_status_msg.base_info)
+  clear_has_base_info();
+  ::message::Base_info* temp = base_info_;
+  base_info_ = NULL;
   return temp;
 }
-inline ::message::Base_msg* Measure_status_msg::mutable_msg_type() {
-  set_has_msg_type();
-  if (msg_type_ == NULL) {
-    msg_type_ = new ::message::Base_msg;
+inline ::message::Base_info* Measure_status_msg::mutable_base_info() {
+  set_has_base_info();
+  if (base_info_ == NULL) {
+    base_info_ = new ::message::Base_info;
   }
-  // @@protoc_insertion_point(field_mutable:message.Measure_status_msg.msg_type)
-  return msg_type_;
+  // @@protoc_insertion_point(field_mutable:message.Measure_status_msg.base_info)
+  return base_info_;
 }
-inline void Measure_status_msg::set_allocated_msg_type(::message::Base_msg* msg_type) {
+inline void Measure_status_msg::set_allocated_base_info(::message::Base_info* base_info) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_type_);
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(base_info_);
   }
-  if (msg_type) {
+  if (base_info) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      msg_type = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, msg_type, submessage_arena);
+      base_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, base_info, submessage_arena);
     }
-    set_has_msg_type();
+    set_has_base_info();
   } else {
-    clear_has_msg_type();
+    clear_has_base_info();
   }
-  msg_type_ = msg_type;
-  // @@protoc_insertion_point(field_set_allocated:message.Measure_status_msg.msg_type)
+  base_info_ = base_info;
+  // @@protoc_insertion_point(field_set_allocated:message.Measure_status_msg.base_info)
 }
 
 // required .message.Laser_manager_status laser_manager_status = 2;
@@ -846,54 +846,54 @@ inline void Measure_status_msg::set_allocated_error_manager(::message::Error_man
 
 // Measure_request_msg
 
-// required .message.Base_msg msg_base = 1;
-inline bool Measure_request_msg::has_msg_base() const {
+// required .message.Base_info base_info = 1;
+inline bool Measure_request_msg::has_base_info() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Measure_request_msg::set_has_msg_base() {
+inline void Measure_request_msg::set_has_base_info() {
   _has_bits_[0] |= 0x00000001u;
 }
-inline void Measure_request_msg::clear_has_msg_base() {
+inline void Measure_request_msg::clear_has_base_info() {
   _has_bits_[0] &= ~0x00000001u;
 }
-inline const ::message::Base_msg& Measure_request_msg::msg_base() const {
-  const ::message::Base_msg* p = msg_base_;
-  // @@protoc_insertion_point(field_get:message.Measure_request_msg.msg_base)
-  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_msg*>(
-      &::message::_Base_msg_default_instance_);
-}
-inline ::message::Base_msg* Measure_request_msg::release_msg_base() {
-  // @@protoc_insertion_point(field_release:message.Measure_request_msg.msg_base)
-  clear_has_msg_base();
-  ::message::Base_msg* temp = msg_base_;
-  msg_base_ = NULL;
+inline const ::message::Base_info& Measure_request_msg::base_info() const {
+  const ::message::Base_info* p = base_info_;
+  // @@protoc_insertion_point(field_get:message.Measure_request_msg.base_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_info*>(
+      &::message::_Base_info_default_instance_);
+}
+inline ::message::Base_info* Measure_request_msg::release_base_info() {
+  // @@protoc_insertion_point(field_release:message.Measure_request_msg.base_info)
+  clear_has_base_info();
+  ::message::Base_info* temp = base_info_;
+  base_info_ = NULL;
   return temp;
 }
-inline ::message::Base_msg* Measure_request_msg::mutable_msg_base() {
-  set_has_msg_base();
-  if (msg_base_ == NULL) {
-    msg_base_ = new ::message::Base_msg;
+inline ::message::Base_info* Measure_request_msg::mutable_base_info() {
+  set_has_base_info();
+  if (base_info_ == NULL) {
+    base_info_ = new ::message::Base_info;
   }
-  // @@protoc_insertion_point(field_mutable:message.Measure_request_msg.msg_base)
-  return msg_base_;
+  // @@protoc_insertion_point(field_mutable:message.Measure_request_msg.base_info)
+  return base_info_;
 }
-inline void Measure_request_msg::set_allocated_msg_base(::message::Base_msg* msg_base) {
+inline void Measure_request_msg::set_allocated_base_info(::message::Base_info* base_info) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_base_);
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(base_info_);
   }
-  if (msg_base) {
+  if (base_info) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      msg_base = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, msg_base, submessage_arena);
+      base_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, base_info, submessage_arena);
     }
-    set_has_msg_base();
+    set_has_base_info();
   } else {
-    clear_has_msg_base();
+    clear_has_base_info();
   }
-  msg_base_ = msg_base;
-  // @@protoc_insertion_point(field_set_allocated:message.Measure_request_msg.msg_base)
+  base_info_ = base_info;
+  // @@protoc_insertion_point(field_set_allocated:message.Measure_request_msg.base_info)
 }
 
 // required int32 command_id = 2;
@@ -948,54 +948,54 @@ inline void Measure_request_msg::set_terminal_id(::google::protobuf::int32 value
 
 // Measure_response_msg
 
-// required .message.Base_msg msg_base = 1;
-inline bool Measure_response_msg::has_msg_base() const {
+// required .message.Base_info base_info = 1;
+inline bool Measure_response_msg::has_base_info() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Measure_response_msg::set_has_msg_base() {
+inline void Measure_response_msg::set_has_base_info() {
   _has_bits_[0] |= 0x00000001u;
 }
-inline void Measure_response_msg::clear_has_msg_base() {
+inline void Measure_response_msg::clear_has_base_info() {
   _has_bits_[0] &= ~0x00000001u;
 }
-inline const ::message::Base_msg& Measure_response_msg::msg_base() const {
-  const ::message::Base_msg* p = msg_base_;
-  // @@protoc_insertion_point(field_get:message.Measure_response_msg.msg_base)
-  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_msg*>(
-      &::message::_Base_msg_default_instance_);
-}
-inline ::message::Base_msg* Measure_response_msg::release_msg_base() {
-  // @@protoc_insertion_point(field_release:message.Measure_response_msg.msg_base)
-  clear_has_msg_base();
-  ::message::Base_msg* temp = msg_base_;
-  msg_base_ = NULL;
+inline const ::message::Base_info& Measure_response_msg::base_info() const {
+  const ::message::Base_info* p = base_info_;
+  // @@protoc_insertion_point(field_get:message.Measure_response_msg.base_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_info*>(
+      &::message::_Base_info_default_instance_);
+}
+inline ::message::Base_info* Measure_response_msg::release_base_info() {
+  // @@protoc_insertion_point(field_release:message.Measure_response_msg.base_info)
+  clear_has_base_info();
+  ::message::Base_info* temp = base_info_;
+  base_info_ = NULL;
   return temp;
 }
-inline ::message::Base_msg* Measure_response_msg::mutable_msg_base() {
-  set_has_msg_base();
-  if (msg_base_ == NULL) {
-    msg_base_ = new ::message::Base_msg;
+inline ::message::Base_info* Measure_response_msg::mutable_base_info() {
+  set_has_base_info();
+  if (base_info_ == NULL) {
+    base_info_ = new ::message::Base_info;
   }
-  // @@protoc_insertion_point(field_mutable:message.Measure_response_msg.msg_base)
-  return msg_base_;
+  // @@protoc_insertion_point(field_mutable:message.Measure_response_msg.base_info)
+  return base_info_;
 }
-inline void Measure_response_msg::set_allocated_msg_base(::message::Base_msg* msg_base) {
+inline void Measure_response_msg::set_allocated_base_info(::message::Base_info* base_info) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete reinterpret_cast< ::google::protobuf::MessageLite*>(msg_base_);
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(base_info_);
   }
-  if (msg_base) {
+  if (base_info) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      msg_base = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, msg_base, submessage_arena);
+      base_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, base_info, submessage_arena);
     }
-    set_has_msg_base();
+    set_has_base_info();
   } else {
-    clear_has_msg_base();
+    clear_has_base_info();
   }
-  msg_base_ = msg_base;
-  // @@protoc_insertion_point(field_set_allocated:message.Measure_response_msg.msg_base)
+  base_info_ = base_info;
+  // @@protoc_insertion_point(field_set_allocated:message.Measure_response_msg.base_info)
 }
 
 // required int32 command_id = 2;

+ 3 - 3
message/measure_message.proto

@@ -36,7 +36,7 @@ enum Locate_manager_status
 //定位模块状态
 message Measure_status_msg
 {
-    required Base_msg                   msg_type=1;                 //消息类型
+    required Base_info                  base_info=1;                 //消息类型
 
     required Laser_manager_status       laser_manager_status = 2;
     repeated Laser_statu                laser_statu_vector = 3;
@@ -50,7 +50,7 @@ message Measure_status_msg
 //定位请求消息
 message Measure_request_msg
 {
-    required Base_msg                   msg_base=1;         //消息类型
+    required Base_info                  base_info=1;        //消息类型
     required int32                      command_id=2;                   //指令唯一标识符id
     required int32                      terminal_id=3;          //终端id
 }
@@ -58,7 +58,7 @@ message Measure_request_msg
 //定位测量返回消息
 message Measure_response_msg
 {
-    required Base_msg                   msg_base=1;                          //消息类型
+    required Base_info                  base_info=1;                         //消息类型
     required int32                      command_id=2;                   //指令唯一标识符id
     required int32                      terminal_id=3;
 

+ 380 - 85
message/message_base.pb.cc

@@ -20,6 +20,11 @@
 #endif
 // @@protoc_insertion_point(includes)
 namespace message {
+class Base_infoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Base_info>
+      _instance;
+} _Base_info_default_instance_;
 class Base_msgDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<Base_msg>
@@ -37,6 +42,27 @@ class Locate_informationDefaultTypeInternal {
 } _Locate_information_default_instance_;
 }  // namespace message
 namespace protobuf_message_5fbase_2eproto {
+void InitDefaultsBase_infoImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::message::_Base_info_default_instance_;
+    new (ptr) ::message::Base_info();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::message::Base_info::InitAsDefaultInstance();
+}
+
+void InitDefaultsBase_info() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsBase_infoImpl);
+}
+
 void InitDefaultsBase_msgImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
@@ -45,6 +71,7 @@ void InitDefaultsBase_msgImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   {
     void* ptr = &::message::_Base_msg_default_instance_;
     new (ptr) ::message::Base_msg();
@@ -100,23 +127,30 @@ void InitDefaultsLocate_information() {
   ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsLocate_informationImpl);
 }
 
-::google::protobuf::Metadata file_level_metadata[3];
+::google::protobuf::Metadata file_level_metadata[4];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[3];
 
 const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_info, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_info, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, msg_type_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, timeout_ms_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, sender_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, receiver_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_info, msg_type_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_info, timeout_ms_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_info, sender_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_info, receiver_),
   0,
   1,
   2,
   3,
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Base_msg, base_info_),
+  0,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Error_manager, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Error_manager, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -153,12 +187,14 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   8,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, 9, sizeof(::message::Base_msg)},
-  { 13, 21, sizeof(::message::Error_manager)},
-  { 24, 38, sizeof(::message::Locate_information)},
+  { 0, 9, sizeof(::message::Base_info)},
+  { 13, 19, sizeof(::message::Base_msg)},
+  { 20, 28, sizeof(::message::Error_manager)},
+  { 31, 45, sizeof(::message::Locate_information)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Base_info_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Base_msg_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Error_manager_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Locate_information_default_instance_),
@@ -180,39 +216,40 @@ void protobuf_AssignDescriptorsOnce() {
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
 void protobuf_RegisterTypes(const ::std::string&) {
   protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 3);
+  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 4);
 }
 
 void AddDescriptorsImpl() {
   InitDefaults();
   static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-      "\n\022message_base.proto\022\007message\"\227\001\n\010Base_m"
-      "sg\022\'\n\010msg_type\030\001 \002(\0162\025.message.Message_t"
-      "ype\022\022\n\ntimeout_ms\030\002 \001(\005\022%\n\006sender\030\003 \002(\0162"
-      "\025.message.Communicator\022\'\n\010receiver\030\004 \002(\016"
-      "2\025.message.Communicator\"i\n\rError_manager"
-      "\022\022\n\nerror_code\030\001 \002(\005\022)\n\013error_level\030\002 \001("
-      "\0162\024.message.Error_level\022\031\n\021error_descrip"
-      "tion\030\003 \001(\t\"\341\001\n\022Locate_information\022\020\n\010loc"
-      "ate_x\030\001 \001(\002\022\020\n\010locate_y\030\002 \001(\002\022\024\n\014locate_"
-      "angle\030\003 \001(\002\022\025\n\rlocate_length\030\004 \001(\002\022\024\n\014lo"
-      "cate_width\030\005 \001(\002\022\025\n\rlocate_height\030\006 \001(\002\022"
-      "\031\n\021locate_wheel_base\030\007 \001(\002\022\032\n\022locate_whe"
-      "el_width\030\010 \001(\002\022\026\n\016locate_correct\030\t \001(\010*\307"
-      "\001\n\014Message_type\022\r\n\teBase_msg\020\000\022\020\n\014eComma"
-      "nd_msg\020\001\022\026\n\022eLocate_status_msg\020\021\022\027\n\023eLoc"
-      "ate_request_msg\020\022\022\030\n\024eLocate_response_ms"
-      "g\020\023\022\026\n\022eHarware_statu_msg\020!\022\030\n\024eExecute_"
-      "request_msg\020\"\022\031\n\025eExecute_response_msg\020#"
-      "*a\n\014Communicator\022\n\n\006eEmpty\020\000\022\t\n\005eMain\020\001\022"
-      "\016\n\teTerminor\020\200\002\022\013\n\006eTable\020\200\004\022\016\n\teMeasure"
-      "r\020\200\006\022\r\n\010eProcess\020\200\010*e\n\013Error_level\022\n\n\006NO"
-      "RMAL\020\000\022\024\n\020NEGLIGIBLE_ERROR\020\001\022\017\n\013MINOR_ER"
-      "ROR\020\002\022\017\n\013MAJOR_ERROR\020\003\022\022\n\016CRITICAL_ERROR"
-      "\020\004"
+      "\n\022message_base.proto\022\007message\"\230\001\n\tBase_i"
+      "nfo\022\'\n\010msg_type\030\001 \002(\0162\025.message.Message_"
+      "type\022\022\n\ntimeout_ms\030\002 \001(\005\022%\n\006sender\030\003 \002(\016"
+      "2\025.message.Communicator\022\'\n\010receiver\030\004 \002("
+      "\0162\025.message.Communicator\"1\n\010Base_msg\022%\n\t"
+      "base_info\030\001 \002(\0132\022.message.Base_info\"i\n\rE"
+      "rror_manager\022\022\n\nerror_code\030\001 \002(\005\022)\n\013erro"
+      "r_level\030\002 \001(\0162\024.message.Error_level\022\031\n\021e"
+      "rror_description\030\003 \001(\t\"\341\001\n\022Locate_inform"
+      "ation\022\020\n\010locate_x\030\001 \001(\002\022\020\n\010locate_y\030\002 \001("
+      "\002\022\024\n\014locate_angle\030\003 \001(\002\022\025\n\rlocate_length"
+      "\030\004 \001(\002\022\024\n\014locate_width\030\005 \001(\002\022\025\n\rlocate_h"
+      "eight\030\006 \001(\002\022\031\n\021locate_wheel_base\030\007 \001(\002\022\032"
+      "\n\022locate_wheel_width\030\010 \001(\002\022\026\n\016locate_cor"
+      "rect\030\t \001(\010*\307\001\n\014Message_type\022\r\n\teBase_msg"
+      "\020\000\022\020\n\014eCommand_msg\020\001\022\026\n\022eLocate_status_m"
+      "sg\020\021\022\027\n\023eLocate_request_msg\020\022\022\030\n\024eLocate"
+      "_response_msg\020\023\022\026\n\022eHarware_statu_msg\020!\022"
+      "\030\n\024eExecute_request_msg\020\"\022\031\n\025eExecute_re"
+      "sponse_msg\020#*a\n\014Communicator\022\n\n\006eEmpty\020\000"
+      "\022\t\n\005eMain\020\001\022\016\n\teTerminor\020\200\002\022\013\n\006eTable\020\200\004"
+      "\022\016\n\teMeasurer\020\200\006\022\r\n\010eProcess\020\200\010*e\n\013Error"
+      "_level\022\n\n\006NORMAL\020\000\022\024\n\020NEGLIGIBLE_ERROR\020\001"
+      "\022\017\n\013MINOR_ERROR\020\002\022\017\n\013MAJOR_ERROR\020\003\022\022\n\016CR"
+      "ITICAL_ERROR\020\004"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 922);
+      descriptor, 974);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "message_base.proto", &protobuf_RegisterTypes);
 }
@@ -287,24 +324,24 @@ bool Error_level_IsValid(int value) {
 
 // ===================================================================
 
-void Base_msg::InitAsDefaultInstance() {
+void Base_info::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Base_msg::kMsgTypeFieldNumber;
-const int Base_msg::kTimeoutMsFieldNumber;
-const int Base_msg::kSenderFieldNumber;
-const int Base_msg::kReceiverFieldNumber;
+const int Base_info::kMsgTypeFieldNumber;
+const int Base_info::kTimeoutMsFieldNumber;
+const int Base_info::kSenderFieldNumber;
+const int Base_info::kReceiverFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-Base_msg::Base_msg()
+Base_info::Base_info()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+    ::protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:message.Base_msg)
+  // @@protoc_insertion_point(constructor:message.Base_info)
 }
-Base_msg::Base_msg(const Base_msg& from)
+Base_info::Base_info(const Base_info& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
@@ -313,49 +350,49 @@ Base_msg::Base_msg(const Base_msg& from)
   ::memcpy(&msg_type_, &from.msg_type_,
     static_cast<size_t>(reinterpret_cast<char*>(&receiver_) -
     reinterpret_cast<char*>(&msg_type_)) + sizeof(receiver_));
-  // @@protoc_insertion_point(copy_constructor:message.Base_msg)
+  // @@protoc_insertion_point(copy_constructor:message.Base_info)
 }
 
-void Base_msg::SharedCtor() {
+void Base_info::SharedCtor() {
   _cached_size_ = 0;
   ::memset(&msg_type_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&receiver_) -
       reinterpret_cast<char*>(&msg_type_)) + sizeof(receiver_));
 }
 
-Base_msg::~Base_msg() {
-  // @@protoc_insertion_point(destructor:message.Base_msg)
+Base_info::~Base_info() {
+  // @@protoc_insertion_point(destructor:message.Base_info)
   SharedDtor();
 }
 
-void Base_msg::SharedDtor() {
+void Base_info::SharedDtor() {
 }
 
-void Base_msg::SetCachedSize(int size) const {
+void Base_info::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* Base_msg::descriptor() {
+const ::google::protobuf::Descriptor* Base_info::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_message_5fbase_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const Base_msg& Base_msg::default_instance() {
-  ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+const Base_info& Base_info::default_instance() {
+  ::protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   return *internal_default_instance();
 }
 
-Base_msg* Base_msg::New(::google::protobuf::Arena* arena) const {
-  Base_msg* n = new Base_msg;
+Base_info* Base_info::New(::google::protobuf::Arena* arena) const {
+  Base_info* n = new Base_info;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void Base_msg::Clear() {
-// @@protoc_insertion_point(message_clear_start:message.Base_msg)
+void Base_info::Clear() {
+// @@protoc_insertion_point(message_clear_start:message.Base_info)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -370,11 +407,11 @@ void Base_msg::Clear() {
   _internal_metadata_.Clear();
 }
 
-bool Base_msg::MergePartialFromCodedStream(
+bool Base_info::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:message.Base_msg)
+  // @@protoc_insertion_point(parse_start:message.Base_info)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -466,17 +503,17 @@ bool Base_msg::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:message.Base_msg)
+  // @@protoc_insertion_point(parse_success:message.Base_info)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:message.Base_msg)
+  // @@protoc_insertion_point(parse_failure:message.Base_info)
   return false;
 #undef DO_
 }
 
-void Base_msg::SerializeWithCachedSizes(
+void Base_info::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:message.Base_msg)
+  // @@protoc_insertion_point(serialize_start:message.Base_info)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -508,13 +545,13 @@ void Base_msg::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
   }
-  // @@protoc_insertion_point(serialize_end:message.Base_msg)
+  // @@protoc_insertion_point(serialize_end:message.Base_info)
 }
 
-::google::protobuf::uint8* Base_msg::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* Base_info::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:message.Base_msg)
+  // @@protoc_insertion_point(serialize_to_array_start:message.Base_info)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -546,12 +583,12 @@ void Base_msg::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:message.Base_msg)
+  // @@protoc_insertion_point(serialize_to_array_end:message.Base_info)
   return target;
 }
 
-size_t Base_msg::RequiredFieldsByteSizeFallback() const {
-// @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Base_msg)
+size_t Base_info::RequiredFieldsByteSizeFallback() const {
+// @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Base_info)
   size_t total_size = 0;
 
   if (has_msg_type()) {
@@ -574,8 +611,8 @@ size_t Base_msg::RequiredFieldsByteSizeFallback() const {
 
   return total_size;
 }
-size_t Base_msg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:message.Base_msg)
+size_t Base_info::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:message.Base_info)
   size_t total_size = 0;
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -613,23 +650,23 @@ size_t Base_msg::ByteSizeLong() const {
   return total_size;
 }
 
-void Base_msg::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:message.Base_msg)
+void Base_info::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:message.Base_info)
   GOOGLE_DCHECK_NE(&from, this);
-  const Base_msg* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const Base_msg>(
+  const Base_info* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const Base_info>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:message.Base_msg)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:message.Base_info)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:message.Base_msg)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:message.Base_info)
     MergeFrom(*source);
   }
 }
 
-void Base_msg::MergeFrom(const Base_msg& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:message.Base_msg)
+void Base_info::MergeFrom(const Base_info& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:message.Base_info)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -653,6 +690,264 @@ void Base_msg::MergeFrom(const Base_msg& from) {
   }
 }
 
+void Base_info::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:message.Base_info)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Base_info::CopyFrom(const Base_info& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:message.Base_info)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Base_info::IsInitialized() const {
+  if ((_has_bits_[0] & 0x0000000d) != 0x0000000d) return false;
+  return true;
+}
+
+void Base_info::Swap(Base_info* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void Base_info::InternalSwap(Base_info* other) {
+  using std::swap;
+  swap(msg_type_, other->msg_type_);
+  swap(timeout_ms_, other->timeout_ms_);
+  swap(sender_, other->sender_);
+  swap(receiver_, other->receiver_);
+  swap(_has_bits_[0], other->_has_bits_[0]);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata Base_info::GetMetadata() const {
+  protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_message_5fbase_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void Base_msg::InitAsDefaultInstance() {
+  ::message::_Base_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
+      ::message::Base_info::internal_default_instance());
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Base_msg::kBaseInfoFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Base_msg::Base_msg()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:message.Base_msg)
+}
+Base_msg::Base_msg(const Base_msg& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_base_info()) {
+    base_info_ = new ::message::Base_info(*from.base_info_);
+  } else {
+    base_info_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:message.Base_msg)
+}
+
+void Base_msg::SharedCtor() {
+  _cached_size_ = 0;
+  base_info_ = NULL;
+}
+
+Base_msg::~Base_msg() {
+  // @@protoc_insertion_point(destructor:message.Base_msg)
+  SharedDtor();
+}
+
+void Base_msg::SharedDtor() {
+  if (this != internal_default_instance()) delete base_info_;
+}
+
+void Base_msg::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* Base_msg::descriptor() {
+  ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_message_5fbase_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const Base_msg& Base_msg::default_instance() {
+  ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  return *internal_default_instance();
+}
+
+Base_msg* Base_msg::New(::google::protobuf::Arena* arena) const {
+  Base_msg* n = new Base_msg;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void Base_msg::Clear() {
+// @@protoc_insertion_point(message_clear_start:message.Base_msg)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  if (cached_has_bits & 0x00000001u) {
+    GOOGLE_DCHECK(base_info_ != NULL);
+    base_info_->Clear();
+  }
+  _has_bits_.Clear();
+  _internal_metadata_.Clear();
+}
+
+bool Base_msg::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:message.Base_msg)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // required .message.Base_info base_info = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_base_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:message.Base_msg)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:message.Base_msg)
+  return false;
+#undef DO_
+}
+
+void Base_msg::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:message.Base_msg)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  // required .message.Base_info base_info = 1;
+  if (cached_has_bits & 0x00000001u) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, *this->base_info_, output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:message.Base_msg)
+}
+
+::google::protobuf::uint8* Base_msg::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:message.Base_msg)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  // required .message.Base_info base_info = 1;
+  if (cached_has_bits & 0x00000001u) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, *this->base_info_, deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:message.Base_msg)
+  return target;
+}
+
+size_t Base_msg::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:message.Base_msg)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  // required .message.Base_info base_info = 1;
+  if (has_base_info()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->base_info_);
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void Base_msg::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:message.Base_msg)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Base_msg* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const Base_msg>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:message.Base_msg)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:message.Base_msg)
+    MergeFrom(*source);
+  }
+}
+
+void Base_msg::MergeFrom(const Base_msg& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:message.Base_msg)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_base_info()) {
+    mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
+  }
+}
+
 void Base_msg::CopyFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_copy_from_start:message.Base_msg)
   if (&from == this) return;
@@ -668,7 +963,10 @@ void Base_msg::CopyFrom(const Base_msg& from) {
 }
 
 bool Base_msg::IsInitialized() const {
-  if ((_has_bits_[0] & 0x0000000d) != 0x0000000d) return false;
+  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
+  if (has_base_info()) {
+    if (!this->base_info_->IsInitialized()) return false;
+  }
   return true;
 }
 
@@ -678,10 +976,7 @@ void Base_msg::Swap(Base_msg* other) {
 }
 void Base_msg::InternalSwap(Base_msg* other) {
   using std::swap;
-  swap(msg_type_, other->msg_type_);
-  swap(timeout_ms_, other->timeout_ms_);
-  swap(sender_, other->sender_);
-  swap(receiver_, other->receiver_);
+  swap(base_info_, other->base_info_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);

+ 234 - 56
message/message_base.pb.h

@@ -37,12 +37,14 @@ namespace protobuf_message_5fbase_2eproto {
 struct TableStruct {
   static const ::google::protobuf::internal::ParseTableField entries[];
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
-  static const ::google::protobuf::internal::ParseTable schema[3];
+  static const ::google::protobuf::internal::ParseTable schema[4];
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
+void InitDefaultsBase_infoImpl();
+void InitDefaultsBase_info();
 void InitDefaultsBase_msgImpl();
 void InitDefaultsBase_msg();
 void InitDefaultsError_managerImpl();
@@ -50,12 +52,16 @@ void InitDefaultsError_manager();
 void InitDefaultsLocate_informationImpl();
 void InitDefaultsLocate_information();
 inline void InitDefaults() {
+  InitDefaultsBase_info();
   InitDefaultsBase_msg();
   InitDefaultsError_manager();
   InitDefaultsLocate_information();
 }
 }  // namespace protobuf_message_5fbase_2eproto
 namespace message {
+class Base_info;
+class Base_infoDefaultTypeInternal;
+extern Base_infoDefaultTypeInternal _Base_info_default_instance_;
 class Base_msg;
 class Base_msgDefaultTypeInternal;
 extern Base_msgDefaultTypeInternal _Base_msg_default_instance_;
@@ -140,24 +146,24 @@ inline bool Error_level_Parse(
 }
 // ===================================================================
 
-class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:message.Base_msg) */ {
+class Base_info : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:message.Base_info) */ {
  public:
-  Base_msg();
-  virtual ~Base_msg();
+  Base_info();
+  virtual ~Base_info();
 
-  Base_msg(const Base_msg& from);
+  Base_info(const Base_info& from);
 
-  inline Base_msg& operator=(const Base_msg& from) {
+  inline Base_info& operator=(const Base_info& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  Base_msg(Base_msg&& from) noexcept
-    : Base_msg() {
+  Base_info(Base_info&& from) noexcept
+    : Base_info() {
     *this = ::std::move(from);
   }
 
-  inline Base_msg& operator=(Base_msg&& from) noexcept {
+  inline Base_info& operator=(Base_info&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -174,30 +180,30 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
   }
 
   static const ::google::protobuf::Descriptor* descriptor();
-  static const Base_msg& default_instance();
+  static const Base_info& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Base_msg* internal_default_instance() {
-    return reinterpret_cast<const Base_msg*>(
-               &_Base_msg_default_instance_);
+  static inline const Base_info* internal_default_instance() {
+    return reinterpret_cast<const Base_info*>(
+               &_Base_info_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
-  void Swap(Base_msg* other);
-  friend void swap(Base_msg& a, Base_msg& b) {
+  void Swap(Base_info* other);
+  friend void swap(Base_info& a, Base_info& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline Base_msg* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline Base_info* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Base_msg* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  Base_info* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const Base_msg& from);
-  void MergeFrom(const Base_msg& from);
+  void CopyFrom(const Base_info& from);
+  void MergeFrom(const Base_info& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -213,7 +219,7 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(Base_msg* other);
+  void InternalSwap(Base_info* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -257,7 +263,7 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
   ::message::Communicator receiver() const;
   void set_receiver(::message::Communicator value);
 
-  // @@protoc_insertion_point(class_scope:message.Base_msg)
+  // @@protoc_insertion_point(class_scope:message.Base_info)
  private:
   void set_has_msg_type();
   void clear_has_msg_type();
@@ -279,6 +285,118 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
   int sender_;
   int receiver_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsBase_infoImpl();
+};
+// -------------------------------------------------------------------
+
+class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:message.Base_msg) */ {
+ public:
+  Base_msg();
+  virtual ~Base_msg();
+
+  Base_msg(const Base_msg& from);
+
+  inline Base_msg& operator=(const Base_msg& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Base_msg(Base_msg&& from) noexcept
+    : Base_msg() {
+    *this = ::std::move(from);
+  }
+
+  inline Base_msg& operator=(Base_msg&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _internal_metadata_.unknown_fields();
+  }
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return _internal_metadata_.mutable_unknown_fields();
+  }
+
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const Base_msg& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Base_msg* internal_default_instance() {
+    return reinterpret_cast<const Base_msg*>(
+               &_Base_msg_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    1;
+
+  void Swap(Base_msg* other);
+  friend void swap(Base_msg& a, Base_msg& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Base_msg* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  Base_msg* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const Base_msg& from);
+  void MergeFrom(const Base_msg& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(Base_msg* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // required .message.Base_info base_info = 1;
+  bool has_base_info() const;
+  void clear_base_info();
+  static const int kBaseInfoFieldNumber = 1;
+  const ::message::Base_info& base_info() const;
+  ::message::Base_info* release_base_info();
+  ::message::Base_info* mutable_base_info();
+  void set_allocated_base_info(::message::Base_info* base_info);
+
+  // @@protoc_insertion_point(class_scope:message.Base_msg)
+ private:
+  void set_has_base_info();
+  void clear_has_base_info();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::HasBits<1> _has_bits_;
+  mutable int _cached_size_;
+  ::message::Base_info* base_info_;
+  friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
   friend void ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msgImpl();
 };
 // -------------------------------------------------------------------
@@ -325,7 +443,7 @@ class Error_manager : public ::google::protobuf::Message /* @@protoc_insertion_p
                &_Error_manager_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    1;
+    2;
 
   void Swap(Error_manager* other);
   friend void swap(Error_manager& a, Error_manager& b) {
@@ -463,7 +581,7 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
                &_Locate_information_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    2;
+    3;
 
   void Swap(Locate_information* other);
   friend void swap(Locate_information& a, Locate_information& b) {
@@ -618,105 +736,163 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
   #pragma GCC diagnostic push
   #pragma GCC diagnostic ignored "-Wstrict-aliasing"
 #endif  // __GNUC__
-// Base_msg
+// Base_info
 
 // required .message.Message_type msg_type = 1;
-inline bool Base_msg::has_msg_type() const {
+inline bool Base_info::has_msg_type() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Base_msg::set_has_msg_type() {
+inline void Base_info::set_has_msg_type() {
   _has_bits_[0] |= 0x00000001u;
 }
-inline void Base_msg::clear_has_msg_type() {
+inline void Base_info::clear_has_msg_type() {
   _has_bits_[0] &= ~0x00000001u;
 }
-inline void Base_msg::clear_msg_type() {
+inline void Base_info::clear_msg_type() {
   msg_type_ = 0;
   clear_has_msg_type();
 }
-inline ::message::Message_type Base_msg::msg_type() const {
-  // @@protoc_insertion_point(field_get:message.Base_msg.msg_type)
+inline ::message::Message_type Base_info::msg_type() const {
+  // @@protoc_insertion_point(field_get:message.Base_info.msg_type)
   return static_cast< ::message::Message_type >(msg_type_);
 }
-inline void Base_msg::set_msg_type(::message::Message_type value) {
+inline void Base_info::set_msg_type(::message::Message_type value) {
   assert(::message::Message_type_IsValid(value));
   set_has_msg_type();
   msg_type_ = value;
-  // @@protoc_insertion_point(field_set:message.Base_msg.msg_type)
+  // @@protoc_insertion_point(field_set:message.Base_info.msg_type)
 }
 
 // optional int32 timeout_ms = 2;
-inline bool Base_msg::has_timeout_ms() const {
+inline bool Base_info::has_timeout_ms() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
 }
-inline void Base_msg::set_has_timeout_ms() {
+inline void Base_info::set_has_timeout_ms() {
   _has_bits_[0] |= 0x00000002u;
 }
-inline void Base_msg::clear_has_timeout_ms() {
+inline void Base_info::clear_has_timeout_ms() {
   _has_bits_[0] &= ~0x00000002u;
 }
-inline void Base_msg::clear_timeout_ms() {
+inline void Base_info::clear_timeout_ms() {
   timeout_ms_ = 0;
   clear_has_timeout_ms();
 }
-inline ::google::protobuf::int32 Base_msg::timeout_ms() const {
-  // @@protoc_insertion_point(field_get:message.Base_msg.timeout_ms)
+inline ::google::protobuf::int32 Base_info::timeout_ms() const {
+  // @@protoc_insertion_point(field_get:message.Base_info.timeout_ms)
   return timeout_ms_;
 }
-inline void Base_msg::set_timeout_ms(::google::protobuf::int32 value) {
+inline void Base_info::set_timeout_ms(::google::protobuf::int32 value) {
   set_has_timeout_ms();
   timeout_ms_ = value;
-  // @@protoc_insertion_point(field_set:message.Base_msg.timeout_ms)
+  // @@protoc_insertion_point(field_set:message.Base_info.timeout_ms)
 }
 
 // required .message.Communicator sender = 3;
-inline bool Base_msg::has_sender() const {
+inline bool Base_info::has_sender() const {
   return (_has_bits_[0] & 0x00000004u) != 0;
 }
-inline void Base_msg::set_has_sender() {
+inline void Base_info::set_has_sender() {
   _has_bits_[0] |= 0x00000004u;
 }
-inline void Base_msg::clear_has_sender() {
+inline void Base_info::clear_has_sender() {
   _has_bits_[0] &= ~0x00000004u;
 }
-inline void Base_msg::clear_sender() {
+inline void Base_info::clear_sender() {
   sender_ = 0;
   clear_has_sender();
 }
-inline ::message::Communicator Base_msg::sender() const {
-  // @@protoc_insertion_point(field_get:message.Base_msg.sender)
+inline ::message::Communicator Base_info::sender() const {
+  // @@protoc_insertion_point(field_get:message.Base_info.sender)
   return static_cast< ::message::Communicator >(sender_);
 }
-inline void Base_msg::set_sender(::message::Communicator value) {
+inline void Base_info::set_sender(::message::Communicator value) {
   assert(::message::Communicator_IsValid(value));
   set_has_sender();
   sender_ = value;
-  // @@protoc_insertion_point(field_set:message.Base_msg.sender)
+  // @@protoc_insertion_point(field_set:message.Base_info.sender)
 }
 
 // required .message.Communicator receiver = 4;
-inline bool Base_msg::has_receiver() const {
+inline bool Base_info::has_receiver() const {
   return (_has_bits_[0] & 0x00000008u) != 0;
 }
-inline void Base_msg::set_has_receiver() {
+inline void Base_info::set_has_receiver() {
   _has_bits_[0] |= 0x00000008u;
 }
-inline void Base_msg::clear_has_receiver() {
+inline void Base_info::clear_has_receiver() {
   _has_bits_[0] &= ~0x00000008u;
 }
-inline void Base_msg::clear_receiver() {
+inline void Base_info::clear_receiver() {
   receiver_ = 0;
   clear_has_receiver();
 }
-inline ::message::Communicator Base_msg::receiver() const {
-  // @@protoc_insertion_point(field_get:message.Base_msg.receiver)
+inline ::message::Communicator Base_info::receiver() const {
+  // @@protoc_insertion_point(field_get:message.Base_info.receiver)
   return static_cast< ::message::Communicator >(receiver_);
 }
-inline void Base_msg::set_receiver(::message::Communicator value) {
+inline void Base_info::set_receiver(::message::Communicator value) {
   assert(::message::Communicator_IsValid(value));
   set_has_receiver();
   receiver_ = value;
-  // @@protoc_insertion_point(field_set:message.Base_msg.receiver)
+  // @@protoc_insertion_point(field_set:message.Base_info.receiver)
+}
+
+// -------------------------------------------------------------------
+
+// Base_msg
+
+// required .message.Base_info base_info = 1;
+inline bool Base_msg::has_base_info() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void Base_msg::set_has_base_info() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void Base_msg::clear_has_base_info() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void Base_msg::clear_base_info() {
+  if (base_info_ != NULL) base_info_->Clear();
+  clear_has_base_info();
+}
+inline const ::message::Base_info& Base_msg::base_info() const {
+  const ::message::Base_info* p = base_info_;
+  // @@protoc_insertion_point(field_get:message.Base_msg.base_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Base_info*>(
+      &::message::_Base_info_default_instance_);
+}
+inline ::message::Base_info* Base_msg::release_base_info() {
+  // @@protoc_insertion_point(field_release:message.Base_msg.base_info)
+  clear_has_base_info();
+  ::message::Base_info* temp = base_info_;
+  base_info_ = NULL;
+  return temp;
+}
+inline ::message::Base_info* Base_msg::mutable_base_info() {
+  set_has_base_info();
+  if (base_info_ == NULL) {
+    base_info_ = new ::message::Base_info;
+  }
+  // @@protoc_insertion_point(field_mutable:message.Base_msg.base_info)
+  return base_info_;
+}
+inline void Base_msg::set_allocated_base_info(::message::Base_info* base_info) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete base_info_;
+  }
+  if (base_info) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      base_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, base_info, submessage_arena);
+    }
+    set_has_base_info();
+  } else {
+    clear_has_base_info();
+  }
+  base_info_ = base_info;
+  // @@protoc_insertion_point(field_set_allocated:message.Base_msg.base_info)
 }
 
 // -------------------------------------------------------------------
@@ -1062,6 +1238,8 @@ inline void Locate_information::set_locate_correct(bool value) {
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 

+ 5 - 1
message/message_base.proto

@@ -37,7 +37,7 @@ enum Communicator
 
 }
 ////base message 用于解析未知类型的消息
-message Base_msg
+message Base_info
 {
     required Message_type               msg_type=1;
     optional int32                      timeout_ms=2;
@@ -45,6 +45,10 @@ message Base_msg
     required Communicator               receiver=4;                     //接收者
 }
 
+message Base_msg
+{
+    required Base_info                  base_info=1;
+}
 
 //错误等级,用来做故障处理
 enum Error_level

+ 1 - 2
system/system_communication.cpp

@@ -17,8 +17,7 @@ System_communication::~System_communication()
 //定时封装发送消息, 一般为心跳和状态信息, 需要子类重载
 Error_manager System_communication::encapsulate_send_data()
 {
-
-	return Error_code::SUCCESS;
+	return Communication_socket_base::encapsulate_send_data();
 }
 
 

+ 0 - 12
system/system_communication.h

@@ -10,19 +10,7 @@
 
 class System_communication:public Singleton<System_communication>, public Communication_socket_base
 {
-	enum Message_type
-	{
-		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,             //调度结果反馈消息
-
-	};
 // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
    friend class Singleton<System_communication>;
 private:

+ 122 - 0
system/system_executor.cpp

@@ -0,0 +1,122 @@
+//
+// Created by huli on 2020/7/2.
+//
+
+#include "system_executor.h"
+#include "../message/measure_message.pb.h"
+#include "../laser/laser_manager.h"
+#include "../locate/locate_manager.h"
+
+System_executor::System_executor(int thread_pool_size)
+:m_thread_pool(thread_pool_size)
+{
+
+}
+
+System_executor::~System_executor()
+{
+
+}
+
+//检查执行者的状态, 判断能否处理这条消息,
+Error_manager System_executor::check_executer(Communication_message* p_msg)
+{
+	if ( p_msg == NULL )
+	{
+		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
+							 "  POINTER IS NULL ");
+	}
+
+	Error_manager t_error;
+	switch ( p_msg->get_message_type() )
+	{
+		case Communication_message::eLocate_request_msg:
+			if ( Laser_manager::get_instance_references().check_status() == SUCCESS &&
+			Locate_manager::get_instance_references().check_status() == SUCCESS	)
+			{
+				t_error =  Error_code::SUCCESS;
+			}
+			else if ( Laser_manager::get_instance_references().check_status() == LASER_MANAGER_STATUS_BUSY &&
+					  Locate_manager::get_instance_references().check_status() == LOCATER_MANAGER_STATUS_BUSY )
+			{
+				t_error =  Error_code::COMMUNICATION_EXCUTER_IS_BUSY;
+			}
+			else
+			{
+			    if ( Laser_manager::get_instance_references().check_status() == LASER_MANAGER_STATUS_ERROR )
+			    {
+					t_error.compare_and_cover_error(Laser_manager::get_instance_references().check_status());
+			    }
+				if ( Locate_manager::get_instance_references().check_status() == LOCATER_MANAGER_STATUS_ERROR )
+				{
+					t_error.compare_and_cover_error(Laser_manager::get_instance_references().check_status());
+				}
+			}
+			break;
+
+	}
+
+
+	return t_error;
+}
+
+
+//处理消息的执行函数
+Error_manager System_executor::execute_msg(Communication_message* p_msg)
+{
+	if ( p_msg == NULL )
+	{
+		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
+							 "  POINTER IS NULL ");
+	}
+
+	switch ( p_msg->get_message_type() )
+	{
+		case Communication_message::eLocate_request_msg:
+			message::Measure_request_msg t_measure_request_msg;
+			//针对消息类型, 对消息进行二次解析
+			if( t_measure_request_msg.ParseFromString(p_msg->get_message_buf()) )
+			{
+				//往线程池添加执行任务, 之后会唤醒一个线程去执行他.
+				m_thread_pool.enqueue(&System_executor::execute_for_measure, this,
+				t_measure_request_msg.command_id(), t_measure_request_msg.terminal_id());
+			}
+			else
+			{
+			    return Error_manager(Error_code::SYSTEM_EXECUTOR_PARSE_ERROR, Error_level::MINOR_ERROR,
+			    					" message::Measure_request_msg  ParseFromString error ");
+			}
+			break;
+
+	}
+
+
+	return Error_code::SUCCESS;
+}
+
+
+//判断是否为待机,如果已经准备好,则可以执行任务。
+bool System_executor::is_ready()
+{
+	if ( m_system_executor_status == SYSTEM_EXECUTOR_READY && m_thread_pool.thread_is_full_load() == false )
+	{
+	    return true;
+	}
+	else
+	{
+		return false;
+	}
+}
+
+
+
+
+
+//雷达感测定位 的处理函数
+//input::command_id, 消息指令id, 由主控制系统生成的唯一码
+//input::command_id, 终端id, 对应具体的某个车位
+//return::void, 没有返回, 执行结果直接生成一条答复消息, 然后通过通信返回
+void System_executor::execute_for_measure(int command_id, int terminal_id)
+{
+
+}

+ 69 - 0
system/system_executor.h

@@ -0,0 +1,69 @@
+//
+// Created by huli on 2020/7/2.
+//
+
+#ifndef NNXX_TESTS_SYSTEM_EXECUTOR_H
+#define NNXX_TESTS_SYSTEM_EXECUTOR_H
+
+#include "../tool/thread_pool.h"
+#include "../tool/singleton.h"
+#include "../error_code/error_code.h"
+#include "../communication/communication_message.h"
+
+
+class System_executor:public Singleton<System_executor>
+{
+// 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
+   friend class Singleton<System_executor>;
+
+public:
+	//系统执行者的状态
+	enum System_executor_status
+	{//default SYSTEM_EXECUTOR_UNKNOW = 0
+	    SYSTEM_EXECUTOR_UNKNOW				= 0,    //
+		SYSTEM_EXECUTOR_READY				= 1,    //
+
+		SYSTEM_EXECUTOR_FAULT				= 10,    //
+
+	};
+   
+private:
+ // 父类的构造函数必须保护,子类的构造函数必须私有。
+   System_executor(int thread_pool_size);
+public:
+    //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
+    System_executor(const System_executor& other) = delete;
+    System_executor& operator =(const System_executor& other) = delete;
+    ~System_executor();
+public://API functions
+
+
+	//检查执行者的状态, 判断能否处理这条消息,
+	Error_manager check_executer(Communication_message* p_msg);
+	//处理消息的执行函数
+	Error_manager execute_msg(Communication_message* p_msg);
+
+	//判断是否为待机,如果已经准备好,则可以执行任务。
+	bool is_ready();
+public://get or set member variable
+
+public:
+	//雷达感测定位 的处理函数
+//input::command_id, 消息指令id, 由主控制系统生成的唯一码
+//input::command_id, 终端id, 对应具体的某个车位
+//return::void, 没有返回, 执行结果直接生成一条答复消息, 然后通过通信返回
+	void execute_for_measure(int command_id, int terminal_id);
+
+
+protected://member variable
+
+	System_executor_status		m_system_executor_status;		//系统执行者的状态
+	
+	Thread_pool 				m_thread_pool;					//执行多任务的线程池
+
+private:
+
+};
+
+
+#endif //NNXX_TESTS_SYSTEM_EXECUTOR_H

+ 23 - 15
test.txt

@@ -1,15 +1,23 @@
-enum Communicator
-	{
-		eEmpty=0x0000,
-		eMain=0x0001,    //主流程
-
-		eTerminor=0x0100,
-		//数据表
-		eTable=0x0200,
-		//测量单元
-		eMeasurer=0x0300,
-		//调度机构
-		eProcess=0x0400,
-		//...
-		
-	},
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 0 - 35
tool/StdCondition.cpp

@@ -1,35 +0,0 @@
-#include "StdCondition.h"
-
-StdCondition::StdCondition():m_value(false)
-{
-}
-
-StdCondition::StdCondition(bool init):m_value(init)
-{
-}
-
-StdCondition::~StdCondition()
-{
-}
-bool StdCondition::isTrue(StdCondition* scd)
-{
-	if (scd == 0)return false;
-	return scd->m_value;
-}
-
-void StdCondition::Wait()
-{
-	std::unique_lock<std::mutex> loc(m_mutex);
-	m_cv.wait(loc,std::bind(isTrue,this));
-}
-bool StdCondition::WaitFor(unsigned int millisecond)
-{
-	std::unique_lock<std::mutex> loc(m_mutex);
-	return m_cv.wait_for(loc, std::chrono::milliseconds(millisecond), std::bind(isTrue, this));
-}
-void StdCondition::Notify(bool istrue)
-{
-	std::unique_lock<std::mutex> loc(m_mutex);
-	m_value = istrue;
-	m_cv.notify_all();
-}

+ 0 - 25
tool/StdCondition.h

@@ -1,25 +0,0 @@
-#pragma once
-
-#include <thread>  
-#include <mutex>  
-#include <chrono>  
-#include <condition_variable>
-
-class StdCondition
-{
-public:
-	StdCondition();
-	StdCondition(bool init);
-	~StdCondition();
-	void Wait();
-	bool WaitFor(unsigned int millisecond);
-	void Notify(bool istrue);
-
-protected:
-	static bool isTrue(StdCondition* scd);
-protected:
-	bool m_value;
-	std::mutex m_mutex;
-	std::condition_variable m_cv;
-};
-

+ 0 - 101
tool/threadSafeQueue.h

@@ -1,101 +0,0 @@
-//
-// Created by zx on 2019/12/17.
-//
-
-#ifndef SRC_THREADSAFEQUEUE_H
-#define SRC_THREADSAFEQUEUE_H
-
-
-#include <queue>
-#include <memory>
-#include <mutex>
-#include <condition_variable>
-template<typename T>
-class threadsafe_queue
-{
-private:
-    mutable std::mutex mut;
-    std::queue<T> data_queue;
-    std::condition_variable data_cond;
-public:
-    threadsafe_queue() {}
-    threadsafe_queue(threadsafe_queue const& other)
-    {
-        std::lock_guard<std::mutex> lk(other.mut);
-        data_queue = other.data_queue;
-    }
-    ~threadsafe_queue()
-    {
-        while (!empty())
-        {
-            try_pop();
-        }
-    }
-    size_t size()
-    {
-        return data_queue.size();
-    }
-    void push(T new_value)//��Ӳ���
-    {
-        std::lock_guard<std::mutex> lk(mut);
-        data_queue.push(new_value);
-        data_cond.notify_one();
-    }
-    void wait_and_pop(T& value)//ֱ����Ԫ�ؿ���ɾ��Ϊֹ
-    {
-        std::unique_lock<std::mutex> lk(mut);
-        data_cond.wait(lk, [this] {return !data_queue.empty(); });
-        value = data_queue.front();
-        data_queue.pop();
-    }
-    std::shared_ptr<T> wait_and_pop()
-    {
-        std::unique_lock<std::mutex> lk(mut);
-        data_cond.wait(lk, [this] {return !data_queue.empty(); });
-        std::shared_ptr<T> res(std::make_shared<T>(data_queue.front()));
-        data_queue.pop();
-        return res;
-    }
-    //ֻ���� �� pop
-    bool front(T& value)
-    {
-        std::lock_guard<std::mutex> lk(mut);
-        if (data_queue.empty())
-            return false;
-        value = data_queue.front();
-        return true;
-    }
-
-    bool try_pop(T& value)//������û�ж���Ԫ��ֱ�ӷ���
-    {
-        if (data_queue.empty())
-            return false;
-        std::lock_guard<std::mutex> lk(mut);
-        value = data_queue.front();
-        data_queue.pop();
-        return true;
-    }
-    std::shared_ptr<T> try_pop()
-    {
-        std::lock_guard<std::mutex> lk(mut);
-        if (data_queue.empty())
-            return std::shared_ptr<T>();
-        std::shared_ptr<T> res(std::make_shared<T>(data_queue.front()));
-        data_queue.pop();
-        return res;
-    }
-    bool empty() const
-    {
-        std::lock_guard<std::mutex> lk(mut);
-        return data_queue.empty();
-    }
-    void clear()
-    {
-        while (!empty()) {
-            try_pop();
-        }
-    }
-};
-
-
-#endif //SRC_THREADSAFEQUEUE_H

+ 70 - 15
tool/ThreadPool.h

@@ -1,18 +1,18 @@
 /*
- * ThreadPool 线程池,
+ * Thread_pool 线程池,
  *
  * */
 
 
 
 //例如
-// ThreadPool thread_pool(4);
+// Thread_pool thread_pool(4);
 // std::future<int> x =  thread_pool.enqueue( []{return 0;} );
 // std::cout << x.get() << std::endl;
 
 //例如
 /*
-ThreadPool pool(4);
+Thread_pool pool(4);
 std::vector< std::future<int> > results;
 
 for(int i = 0; i < 8; ++i) {
@@ -45,10 +45,15 @@ return 0;
 #include <functional>
 #include <stdexcept>
 
-class ThreadPool {
+class Thread_pool {
 public:
 	//构造函数, 会自动初始化 threads_size 数量的线程
-    ThreadPool(size_t threads_size);
+    Thread_pool(size_t threads_size);
+
+	//构造函数,没有初始化的,后续需要调用init才能正常使用
+	Thread_pool();
+	//初始化,初始化 threads_size 数量的线程
+	void thread_pool_init(size_t threads_size);
 
 	//往线程池添加执行任务, 之后会唤醒一个线程去执行他.
 	//input: F&& f  			函数指针(函数名)
@@ -58,7 +63,7 @@ public:
         -> std::future<typename std::result_of<F(Args...)>::type>;
 
 
-    ~ThreadPool();
+    ~Thread_pool();
 
 	//判断线程池是否超载
     bool thread_is_full_load();
@@ -80,17 +85,17 @@ private:
 };
 
 //构造函数, 会自动初始化 threads_size 数量的线程
-inline ThreadPool::ThreadPool(size_t threads)
+inline Thread_pool::Thread_pool(size_t threads_size)
     :   stop(false)
 {
 	//每个线程的工作状态
-	for(size_t i = 0;i<threads;++i)
+	for(size_t i = 0;i<threads_size;++i)
 	{
 		working_flag_vector.push_back(false);
 	}
 
 	//初始化 threads_size 数量的线程
-    for(size_t i = 0;i<threads;++i)
+    for(size_t i = 0;i<threads_size;++i)
         workers.emplace_back(
             [i,this]   //每个线程的执行的基本函数,
             {
@@ -122,16 +127,66 @@ inline ThreadPool::ThreadPool(size_t threads)
 }
 
 
+//构造函数,没有初始化的,后续需要调用init才能正常使用
+inline Thread_pool::Thread_pool()
+:   stop(false)
+{
+
+}
+//初始化,初始化 threads_size 数量的线程
+inline void Thread_pool::thread_pool_init(size_t threads_size)
+{
+	stop = false;
+
+	//每个线程的工作状态
+	for(size_t i = 0;i<threads_size;++i)
+	{
+		working_flag_vector.push_back(false);
+	}
+
+	//初始化 threads_size 数量的线程
+	for(size_t i = 0;i<threads_size;++i)
+		workers.emplace_back(
+		[i,this]   //每个线程的执行的基本函数,
+		{
+			for(;;)
+			{
+				std::function<void()> task;
+
+				{
+					std::unique_lock<std::mutex> lock(this->queue_mutex);
+					this->working_flag_vector[i] = false;//线程等待
+					this->condition.wait(lock,
+										 [this]    //线程等待的判断函数
+										 { return this->stop || !this->tasks.empty(); });
+					if (this->stop )//&& this->tasks.empty()) //这里修改了, 不需要把任务池都执行完才退出, stop之后就可以退了.
+					{
+						return;//只有在终止标志位true, 那么就退出线程执行函数
+					}
+					this->working_flag_vector[i] = true;//线程工作
+					//从 任务池 里面取出 执行函数
+					task = std::move(this->tasks.front());
+					this->tasks.pop();
+				}
+
+				//运行执行函数
+				task();
+			}
+		}
+		);
+}
+
+
+
+
 //往线程池添加执行任务, 之后会唤醒一个线程去执行他.
 //input: F&& f  			函数指针(函数名)
 //input: Args&&... args		函数的参数, 自定义
 //注注注注注意了:::::  res是enqueue的返回值, 由于线程异步, 使用future, 可以返回未来的一个值,
 // 在子线程执行完成之后, 将结果返回给外部主线程
 // 外部主线程 调用时, 必须使用 std::future<return_type> 格式去接受
-
-
 template<class F, class... Args>
-auto ThreadPool::enqueue(F&& f, Args&&... args) 
+auto Thread_pool::enqueue(F&& f, Args&&... args) 
     -> std::future<typename std::result_of<F(Args...)>::type>
 {
     using return_type = typename std::result_of<F(Args...)>::type;
@@ -147,7 +202,7 @@ auto ThreadPool::enqueue(F&& f, Args&&... args)
 
         // don't allow enqueueing after stopping the pool
         if(stop)
-            throw std::runtime_error("enqueue on stopped ThreadPool");
+            throw std::runtime_error("enqueue on stopped Thread_pool");
 
         tasks.emplace([task](){ (*task)(); });
     }
@@ -156,7 +211,7 @@ auto ThreadPool::enqueue(F&& f, Args&&... args)
 }
 
 // the destructor joins all threads
-inline ThreadPool::~ThreadPool()
+inline Thread_pool::~Thread_pool()
 {
     {
         std::unique_lock<std::mutex> lock(queue_mutex);
@@ -170,7 +225,7 @@ inline ThreadPool::~ThreadPool()
 }
 
 //判断线程池是否超载
-bool ThreadPool::thread_is_full_load()
+inline bool Thread_pool::thread_is_full_load()
 {
 	//只要有一个线程wait, 那么就认为没有超载,
 	std::unique_lock<std::mutex> lock(queue_mutex);