RPC流程三 Client端編寫

2021-10-03 01:44:53 字數 2225 閱讀 1045

流程二:

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

通過rpcchannelstub與服務端進行通訊

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...