Skip to content

5 进一步完善RPC Client(异步)

Alex edited this page Dec 19, 2018 · 3 revisions

5 进一步完善RPC Client(异步)

获取源码

使用效果与examples/QuickStartDemo/HelloServer/AsyncClient/main.cpp看齐

1 修改点说明

  • tar_client_async_improve.cpp是新增加的异步client类

  • HelloPrxCallback函数放到了Hello.h中实现

  • ServantProxy中增加tars_invoke_async方法

  • 修改tar-demo部分代码,对应client的函数调用。主要涉及HelloImp.h Hello.h Servant.h及其对应的cpp

2 调用逻辑说明

tar_client_async_improve.cpp中异步调用的逻辑很简单:(1)编写回调函数HelloCallBack (2)调用异步接口async_testHello,将写好的回调函数出入即可。

这里想着重说下客户端调用了testHello函数后,是怎么调用到tar-demo中的testHello处理逻辑中的

  • 以tar-client-async-improve为例,调用async_testHello时,实际发往tar-demo的请求是1:testHello:hello world。1来自于ObjectProxy::invoke中的msg->iRequestId,是一个请求序列号;testHello是调用方法名称;hello world为要请求的实际内容。

  • 服务端接收到这个请求后,会在Hello的onDispatch中解析这个请求,得到方法名称是testHello,因此把这个请求转到HelloImp::testHello方法中进行处理