Thrift解讀(六)——客戶端基本RPC邏輯

這一節說說客戶端。可以說,對於阻塞的客戶端,近乎於沒有任何邏輯。這裏僅僅把一次RPC調用的過程記錄下來。還是認爲,我們在Thrift聲明的服務叫XXX,RPC調用的函數名叫YYY,而且不是oneway方法。Thrift會生成XXXClient類,這個類包括三個方法,YYY、send_YYY、recv_YYY。

程序員會顯示的聲明一個XXXClient的對象c,然後調用c.YYY。c.YYY順次調用c.send_YYY和c.recv_YYY。前者是發送函數名,和參數,後者是接收返回值。整個流程如下:

1. writeMessageBegin

2. 寫入參數,調用args.write

3. writeMessageEnd

4. getTransport()->writeEnd()

5. getTransport()->flush()

6. readMessageBegin 查看是異常還是返回值,查看RPC函數名

7. 如果是返回值,而且RPC函數名匹配,那麼XXX_YYY_presult.read

8. readMessageEnd()

9. getTransport()->readEnd()

10. 讀取返回值成功的話,把RPC結果返回,否則,拋出TApplicationException異常。

可以說,簡單得不能再簡單了!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章