流程二:
int
main()
// google::protobuf::rpcchannel
class
rpcchannel
// google::protobuf::rpccontroller
class
rpccontroller
coder實現一:rpcchannel
class
rpcchannel
:public google::protobuf::rpcchannel
;
coder實現二:rpcchannelimpl
// 主要實現callmethod()用於呼叫服務
class
rpcchannelimpl
:public google::protobuf::rpcchannel
virtual
~rpcchannelimpl()
virtual
void
init
(std::string& server_addr)
;virtual
void
callmethod
(const
::google::protobuf::methoddescriptor* method,
::google::protobuf::rpccontroller* controller,
const
::google::protobuf::message* request,
::google::protobuf::message* response,
::google::protobuf::closure* done
);private
: std::string server_addr_;
boost::shared_ptr io_;
boost::shared_ptr socket_;
};
// client
rpcchannel rpc_channel
(addr)
;echo::echoserver_stub stub
(&rpc_channel)
;// client callmethod
stub.
echo
(&controller,
&request,
&response,
nullptr
);
coder實現三:rpccontroller
// 用於對rpc過程中的資訊進行反饋
class
rpccontroller
:public google::protobuf::rpccontroller
virtual
~rpccontroller()
virtual
void
reset()
virtual
bool
failed()
const
virtual
void
setfailed
(const std::string& reason)
virtual std::string errortext()
const
virtual
void
startcancel()
;virtual
bool
iscanceled()
const
;virtual
void
notifyoncancel
(::google::protobuf::closure*
/* callback */);
private
:bool is_failed_;
std::string error_code_;
};
編寫echorequest
通過rpcchannel及stub與服務端進行通訊
1、rpc流程介紹 -
深入理解 RPC 互動流程
們講解 rpc 的訊息互動流程,目的是搞清楚乙個簡單的 rpc 方法呼叫背後究竟發生了怎樣複雜曲折的故事,以看透 rpc 的本質。上圖是資訊系統互動模型巨集觀示意圖,rpc 的訊息互動則會深入到底層。rpc 是兩個子系統之間進行的直接訊息互動,它使用作業系統提供的套接字來作為訊息的載體,以特定的訊息...
一次完整的 RPC 流程
一次完整的 rpc 流程 因為 rpc 是遠端呼叫,首先會涉及網路通訊,又因為 rpc 用於業務系統之間的資料互動,要保證資料傳輸的可靠性,所以它一般預設採用 tcp 來實現網路資料傳輸。網路傳輸的資料必須是二進位制資料,可是在 rpc 框架中,呼叫方請求的出入引數都是物件,物件不能直接在網路中傳輸...
XFire的Client的三種模式
client開發者擁有web服務端的class 即 能拿到服務端的介面class和entity類及aegis 配置檔案 傳統pojo模式 helloworldurl hello為介面 system.out.println srvc.sayhello robin jsr181模式,注意這裡server...