Browse Source

修正了RpcChannelTest

tanghai 14 years ago
parent
commit
7f4c2fc5b8

+ 3 - 3
Src/Egametang/Rpc/CMakeLists.txt

@@ -6,7 +6,7 @@ SET(RpcSrc
 	RpcCommunicator.cc
 	RpcController.cc
 	RpcHandler.cc
-#	RpcChannel.cc
+	RpcChannel.cc
 	${proto_srcs}
 	)
 
@@ -14,11 +14,11 @@ SET(RpcSrc
 ADD_LIBRARY(Rpc ${RpcSrc})
 
 ADD_EXECUTABLE(RpcCommunicatorTest RpcCommunicatorTest.cc)
-#ADD_EXECUTABLE(RpcChannelTest RpcChannelTest.cc)
+ADD_EXECUTABLE(RpcChannelTest RpcChannelTest.cc)
 
 SET(Excutes 
 	RpcCommunicatorTest
-#	RpcChannelTest
+	RpcChannelTest
 )
 
 FOREACH(Excute ${Excutes})

+ 12 - 8
Src/Egametang/Rpc/RpcChannel.cc

@@ -32,7 +32,9 @@ void RpcChannel::OnAsyncConnect(const boost::system::error_code& err)
 		LOG(ERROR) << "async connect failed: " << err.message();
 		return;
 	}
-	RecvMeta();
+	RpcMetaPtr recv_meta(new RpcMeta());
+	StringPtr recv_message(new std::string);
+	RecvMeta(recv_meta, recv_message);
 }
 
 void RpcChannel::OnRecvMessage(RpcMetaPtr meta, StringPtr message)
@@ -43,7 +45,9 @@ void RpcChannel::OnRecvMessage(RpcMetaPtr meta, StringPtr message)
 	handlers_.erase(meta->id);
 
 	// read size
-	RecvMeta();
+	RpcMetaPtr recv_meta(new RpcMeta());
+	StringPtr recv_message(new std::string);
+	RecvMeta(recv_meta, recv_message);
 
 	// 回调放在函数最后.如果RecvMeta()放在回调之后,
 	// 另外线程可能让io_service stop,导致RecvMeta还未跑完
@@ -75,12 +79,12 @@ void RpcChannel::CallMethod(
 
 	boost::hash<std::string> string_hash;
 
-	std::string message = request->SerializeAsString();
-	RpcMeta meta;
-	meta.size = message.size();
-	VLOG(3) << "send size: " << meta.size;
-	meta.id = id_;
-	meta.method = string_hash(method->full_name());
+	StringPtr message(new std::string);
+	request->SerializePartialToString(message.get());
+	RpcMetaPtr meta(new RpcMeta());
+	meta->size = message->size();
+	meta->id = id_;
+	meta->method = string_hash(method->full_name());
 	SendMeta(meta, message);
 }
 

+ 11 - 7
Src/Egametang/Rpc/RpcChannelTest.cc

@@ -42,7 +42,9 @@ public:
 			LOG(ERROR) << "async accept failed: " << err.message();
 			return;
 		}
-		RecvMeta();
+		RpcMetaPtr meta(new RpcMeta());
+		StringPtr message(new std::string);
+		RecvMeta(meta, message);
 	}
 
 	void Stop()
@@ -62,14 +64,16 @@ public:
 		// 回一个消息
 		EchoResponse response;
 		response.set_num(num_);
-		std::string send_string = response.SerializeAsString();
 
-		RpcMeta response_meta;
-		response_meta.id = meta->id;
-		response_meta.size = send_string.size();
-		SendMeta(response_meta, send_string);
+		StringPtr response_message(new std::string);
+		response.SerializeToString(response_message.get());
+		VLOG(3) << "response message: " << response_message->size();
+		RpcMetaPtr response_meta(new RpcMeta());
+		response_meta->id = meta->id;
+		response_meta->size = response_message->size();
+		SendMeta(response_meta, response_message);
 	}
-	virtual void OnSendMessage()
+	virtual void OnSendMessage(RpcMetaPtr meta, StringPtr message)
 	{
 		barrier_.Signal();
 	}