mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-13 15:14:46 +08:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f60a55d03a |
@@ -164,13 +164,6 @@ func (handler *RpcHandler) suitableMethods(method reflect.Method) error {
|
|||||||
//取出输入参数类型
|
//取出输入参数类型
|
||||||
var rpcMethodInfo RpcMethodInfo
|
var rpcMethodInfo RpcMethodInfo
|
||||||
typ := method.Type
|
typ := method.Type
|
||||||
if typ.NumOut() != 1 {
|
|
||||||
return fmt.Errorf("%s The number of returned arguments must be 1", method.Name)
|
|
||||||
}
|
|
||||||
|
|
||||||
if typ.Out(0).String() != "error" {
|
|
||||||
return fmt.Errorf("%s The return parameter must be of type error", method.Name)
|
|
||||||
}
|
|
||||||
|
|
||||||
if typ.NumIn() < 2 || typ.NumIn() > 4 {
|
if typ.NumIn() < 2 || typ.NumIn() > 4 {
|
||||||
return fmt.Errorf("%s Unsupported parameter format", method.Name)
|
return fmt.Errorf("%s Unsupported parameter format", method.Name)
|
||||||
@@ -183,6 +176,18 @@ func (handler *RpcHandler) suitableMethods(method reflect.Method) error {
|
|||||||
rpcMethodInfo.hasResponder = true
|
rpcMethodInfo.hasResponder = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if rpcMethodInfo.hasResponder && typ.NumOut() > 0 {
|
||||||
|
return fmt.Errorf("%s should not have return parameters", method.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !rpcMethodInfo.hasResponder && typ.NumOut() != 1 {
|
||||||
|
return fmt.Errorf("%s The number of returned arguments must be 1", method.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !rpcMethodInfo.hasResponder && typ.Out(0).String() != "error" {
|
||||||
|
return fmt.Errorf("%s The return parameter must be of type error", method.Name)
|
||||||
|
}
|
||||||
|
|
||||||
for i := parIdx; i < typ.NumIn(); i++ {
|
for i := parIdx; i < typ.NumIn(); i++ {
|
||||||
if handler.isExportedOrBuiltinType(typ.In(i)) == false {
|
if handler.isExportedOrBuiltinType(typ.In(i)) == false {
|
||||||
return fmt.Errorf("%s Unsupported parameter types", method.Name)
|
return fmt.Errorf("%s Unsupported parameter types", method.Name)
|
||||||
@@ -307,9 +312,11 @@ func (handler *RpcHandler) HandlerRpcRequest(request *RpcRequest) {
|
|||||||
|
|
||||||
requestHandle := request.requestHandle
|
requestHandle := request.requestHandle
|
||||||
returnValues := v.method.Func.Call(paramList)
|
returnValues := v.method.Func.Call(paramList)
|
||||||
errInter := returnValues[0].Interface()
|
if len(returnValues) > 0 {
|
||||||
if errInter != nil {
|
errInter := returnValues[0].Interface()
|
||||||
err = errInter.(error)
|
if errInter != nil {
|
||||||
|
err = errInter.(error)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if v.hasResponder == false && requestHandle != nil {
|
if v.hasResponder == false && requestHandle != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user