// 生成rpc方法调用的请求request和响应response参数
定义请求数据对象
google::protobuf::Message *request = service->GetRequestPrototype(method).New();
反序列化请求数据
if (!request->ParseFromString(args_str))
{
std::cout << "request parse error, content:" << args_str << std::endl;
return;
}
定义响应数据对象
google::protobuf::Message *response = service->GetResponsePrototype(method).New();
// 给下面的method方法的调用,绑定一个Closure的回调函数
根据protobuf框架的函数定义,定义回调函数
google::protobuf::Closure *done = google::protobuf::NewCallback<
RpcProvider, const muduo::net::TcpConnectionPtr&, google::protobuf::Message*>
(this,
&RpcProvider::SendRpcResponse,
conn,
response);
// 框架根据远端rpc请求,调用当前rpc节点上发布的方法
// new UserService().Login(controller, request, response, done)
service->CallMethod(method, nullptr, request, response, done);
}