优化rpc返回

This commit is contained in:
duanhf2012
2020-03-31 19:56:06 +08:00
parent 9c9f72d559
commit b953d8dfbb
2 changed files with 12 additions and 6 deletions

View File

@@ -181,13 +181,16 @@ func (slf *Client) Run(){
}else { }else {
delete(slf.pending,respone.Seq) delete(slf.pending,respone.Seq)
slf.pendingLock.Unlock() slf.pendingLock.Unlock()
//*****如果对方返回nil测试跨node时调用其他服务rpc不存在的情况
err = processor.Unmarshal(respone.Returns,v.Reply) if len(respone.Returns) >0 {
if err != nil { err = processor.Unmarshal(respone.Returns,v.Reply)
log.Error("rpcClient Unmarshal body error,error:%+v",err) if err != nil {
continue log.Error("rpcClient Unmarshal body error,error:%+v",err)
v.Err = err
}
} }
if v.callback.IsValid() { if v.callback.IsValid() {
v.rpcHandler.(*RpcHandler).callResponeCallBack<-v v.rpcHandler.(*RpcHandler).callResponeCallBack<-v
}else{ }else{

View File

@@ -228,6 +228,7 @@ func (slf *Server) rpcHandlerAsyncGo(callerRpcHandler IRpcHandler,noReply bool,m
//pCall.done = make( chan *Call,1) //pCall.done = make( chan *Call,1)
pCall.rpcHandler = callerRpcHandler pCall.rpcHandler = callerRpcHandler
pCall.callback = &callback pCall.callback = &callback
pCall.Reply = reply
rpcHandler := slf.rpcHandleFinder.FindRpcHandler(handlerName) rpcHandler := slf.rpcHandleFinder.FindRpcHandler(handlerName)
if rpcHandler== nil { if rpcHandler== nil {
err := fmt.Errorf("service method %s.%s not config!", handlerName,methodName) 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 { if noReply == false {
req.requestHandle = func(Returns interface{},Err error){ req.requestHandle = func(Returns interface{},Err error){
pCall.Err = Err pCall.Err = Err
pCall.Reply = Returns if Returns!=nil {
pCall.Reply = Returns
}
pCall.rpcHandler.(*RpcHandler).callResponeCallBack<-pCall pCall.rpcHandler.(*RpcHandler).callResponeCallBack<-pCall
} }
} }