mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-04 06:54:45 +08:00
优化rpc返回
This commit is contained in:
@@ -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{
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user