From 43f2d428a8bf984c87ab4c68cfd7aa1b2a8a472e Mon Sep 17 00:00:00 2001 From: duanhf2012 Date: Sun, 26 Apr 2020 18:26:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1=E5=9C=A8?= =?UTF-8?q?=E5=A4=9A=E5=8D=8F=E7=A8=8B=E6=A8=A1=E5=BC=8F=E4=B8=8Brpc?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E4=B8=8D=E5=AE=89=E5=85=A8=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/rpchandler.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/rpc/rpchandler.go b/rpc/rpchandler.go index 68f8a65..8a221ad 100644 --- a/rpc/rpchandler.go +++ b/rpc/rpchandler.go @@ -41,7 +41,7 @@ func Errorf(format string, a ...interface{}) *RpcError { type RpcMethodInfo struct { method reflect.Method - iparam interface{} + iparam reflect.Value oParam reflect.Value } @@ -133,7 +133,7 @@ func (slf *RpcHandler) suitableMethods(method reflect.Method) error { return fmt.Errorf("%s Unsupported parameter types!",method.Name) } - rpcMethodInfo.iparam = reflect.New(typ.In(1).Elem()).Interface() //append(rpcMethodInfo.iparam,) + rpcMethodInfo.iparam = reflect.New(typ.In(1).Elem()) //append(rpcMethodInfo.iparam,) rpcMethodInfo.oParam = reflect.New(typ.In(2).Elem()) rpcMethodInfo.method = method @@ -215,10 +215,13 @@ func (slf *RpcHandler) HandlerRpcRequest(request *RpcRequest) { return } + var paramList []reflect.Value var err error + iparam := reflect.New(v.iparam.Type().Elem()).Interface() + if request.localParam==nil{ - err = processor.Unmarshal(request.RpcRequestData.GetInParam(),v.iparam) + err = processor.Unmarshal(request.RpcRequestData.GetInParam(),iparam) if err!=nil { rerr := Errorf("Call Rpc %s Param error %+v",request.RpcRequestData.GetServiceMethod(),err) log.Error("%s",rerr.Error()) @@ -227,7 +230,7 @@ func (slf *RpcHandler) HandlerRpcRequest(request *RpcRequest) { } } }else { - v.iparam = request.localParam + iparam = request.localParam } var oParam reflect.Value @@ -235,7 +238,7 @@ func (slf *RpcHandler) HandlerRpcRequest(request *RpcRequest) { oParam = reflect.New(v.oParam.Type().Elem()) - paramList = append(paramList,reflect.ValueOf(v.iparam)) + paramList = append(paramList,reflect.ValueOf(iparam)) paramList = append(paramList,oParam) //输出参数 returnValues := v.method.Func.Call(paramList)