From f7fa7ab4369aa8c344e568a417c3d82ae3c223a2 Mon Sep 17 00:00:00 2001 From: lifeiyi <736926938@qq.com> Date: Fri, 8 Jan 2021 14:20:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96RPC=20responder=E8=B0=83?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/server.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rpc/server.go b/rpc/server.go index b768a0f..5fae17b 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -273,6 +273,20 @@ func (server *Server) selfNodeRpcHandlerGo(processor IRpcProcessor,client *Clien if noReply == false { client.AddPending(pCall) req.requestHandle = func(Returns interface{},Err RpcError){ + if reply != nil && Returns != reply && Returns != nil { + byteReturns, err := req.rpcProcessor.Marshal(Returns) + if err != nil { + log.Error("returns data cannot be marshal",pCall.Seq) + ReleaseRpcRequest(req) + } + + err = req.rpcProcessor.Unmarshal(byteReturns, reply) + if err != nil { + log.Error("returns data cannot be Unmarshal",pCall.Seq) + ReleaseRpcRequest(req) + } + } + v := client.RemovePending(pCall.Seq) if v == nil { log.Error("rpcClient cannot find seq %d in pending",pCall.Seq)