76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
package ws
|
|
|
|
import (
|
|
"errors"
|
|
. "gitea.zjmud.xyz/phyer/v5sdkgo/ws/wImpl"
|
|
. "gitea.zjmud.xyz/phyer/v5sdkgo/ws/wInterface"
|
|
"log"
|
|
"runtime/debug"
|
|
)
|
|
|
|
// 判断返回结果成功失败
|
|
func checkResult(wsReq WSReqData, wsRsps []*Msg) (res bool, err error) {
|
|
defer func() {
|
|
a := recover()
|
|
if a != nil {
|
|
log.Printf("Receive End. Recover msg: %+v", a)
|
|
debug.PrintStack()
|
|
}
|
|
return
|
|
}()
|
|
|
|
res = false
|
|
if len(wsRsps) == 0 {
|
|
return
|
|
}
|
|
|
|
for _, v := range wsRsps {
|
|
switch v.Info.(type) {
|
|
case ErrData:
|
|
return
|
|
}
|
|
if wsReq.GetType() != v.Info.(WSRspData).MsgType() {
|
|
err = errors.New("消息类型不一致")
|
|
return
|
|
}
|
|
}
|
|
|
|
//检查所有频道是否都更新成功
|
|
if wsReq.GetType() == MSG_NORMAL {
|
|
req, ok := wsReq.(ReqData)
|
|
if !ok {
|
|
log.Println("类型转化失败", req)
|
|
err = errors.New("类型转化失败")
|
|
return
|
|
}
|
|
|
|
for idx, _ := range req.Args {
|
|
ok := false
|
|
i_req := req.Args[idx]
|
|
//fmt.Println("检查",i_req)
|
|
for i, _ := range wsRsps {
|
|
info, _ := wsRsps[i].Info.(RspData)
|
|
//fmt.Println("<<",info)
|
|
if info.Event == req.Op && info.Arg["channel"] == i_req["channel"] && info.Arg["instType"] == i_req["instType"] {
|
|
ok = true
|
|
continue
|
|
}
|
|
}
|
|
if !ok {
|
|
err = errors.New("未得到所有的期望的返回结果")
|
|
return
|
|
}
|
|
}
|
|
} else {
|
|
for i, _ := range wsRsps {
|
|
info, _ := wsRsps[i].Info.(JRPCRsp)
|
|
if info.Code != "0" {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
res = true
|
|
return
|
|
}
|