From b953d8dfbbd04fd089da1971eeeddb2ea9cea9a6 Mon Sep 17 00:00:00 2001 From: duanhf2012 Date: Tue, 31 Mar 2020 19:56:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96rpc=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/client.go | 13 ++++++++----- rpc/server.go | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/rpc/client.go b/rpc/client.go index 48bf098..c874768 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -181,13 +181,16 @@ func (slf *Client) Run(){ }else { delete(slf.pending,respone.Seq) slf.pendingLock.Unlock() - - err = processor.Unmarshal(respone.Returns,v.Reply) - if err != nil { - log.Error("rpcClient Unmarshal body error,error:%+v",err) - continue + //*****如果对方返回nil,测试跨node时,调用其他服务rpc不存在的情况 + if len(respone.Returns) >0 { + err = processor.Unmarshal(respone.Returns,v.Reply) + if err != nil { + log.Error("rpcClient Unmarshal body error,error:%+v",err) + v.Err = err + } } + if v.callback.IsValid() { v.rpcHandler.(*RpcHandler).callResponeCallBack<-v }else{ diff --git a/rpc/server.go b/rpc/server.go index 62003d3..633091f 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -228,6 +228,7 @@ func (slf *Server) rpcHandlerAsyncGo(callerRpcHandler IRpcHandler,noReply bool,m //pCall.done = make( chan *Call,1) pCall.rpcHandler = callerRpcHandler pCall.callback = &callback + pCall.Reply = reply rpcHandler := slf.rpcHandleFinder.FindRpcHandler(handlerName) if rpcHandler== nil { err := fmt.Errorf("service method %s.%s not config!", handlerName,methodName) @@ -245,7 +246,9 @@ func (slf *Server) rpcHandlerAsyncGo(callerRpcHandler IRpcHandler,noReply bool,m if noReply == false { req.requestHandle = func(Returns interface{},Err error){ pCall.Err = Err - pCall.Reply = Returns + if Returns!=nil { + pCall.Reply = Returns + } pCall.rpcHandler.(*RpcHandler).callResponeCallBack<-pCall } }