优化rpc错误返回

This commit is contained in:
duanhf2012
2020-04-01 14:42:33 +08:00
parent 7e6b3098d4
commit a76527c7d7
2 changed files with 15 additions and 12 deletions

View File

@@ -135,13 +135,13 @@ type RpcRequest struct {
Seq uint64 // sequence number chosen by client
ServiceMethod string // format: "Service.Method"
NoReply bool //是否需要返回
//packbody
InParam []byte
//other data
localReply interface{}
localParam interface{} //本地调用的参数列表
requestHandle RequestHandler
callback *reflect.Value
}

View File

@@ -115,22 +115,24 @@ func (agent *RpcAgent) Run() {
for {
data,err := agent.conn.ReadMsg()
if err != nil {
log.Debug("read message: %v", err)
log.Error("read message: %v", err)
//will close tcpconn
break
}
if processor==nil{
log.Error("Rpc Processor not set!")
continue
}
var req RpcRequest
//解析head
var req RpcRequest
err = processor.Unmarshal(data,&req)
if err != nil {
log.Debug("processor message: %v", err)
agent.Close()
break
if req.Seq>0 {
rpcError := RpcError("rpc Unmarshal request is error")
agent.WriteRespone(req.ServiceMethod,req.Seq,nil,&rpcError)
continue
}else{
log.Error("rpc Unmarshal request is error: %v", err)
//will close tcpconn
break
}
}
//交给程序处理
@@ -141,6 +143,7 @@ func (agent *RpcAgent) Run() {
log.Debug("rpc request req.ServiceMethod is error")
continue
}
rpcHandler := agent.rpcserver.rpcHandleFinder.FindRpcHandler(serviceMethod[0])
if rpcHandler== nil {
rpcError := RpcError(fmt.Sprintf("service method %s not config!", req.ServiceMethod))