sbusClient doReq从[]Mesg中先解出MsgInfo
| | |
| | | paramMap := make(map[string]string, 0) |
| | | paramMap["appName"] = appName |
| | | respBody, err := client.DoGetRequest(url, paramMap, nil) |
| | | logPrint("respBody:", respBody, "err:", err) |
| | | logPrint("DoGetRequest err:", err) |
| | | if err !=nil { |
| | | return nil |
| | | } |
| | |
| | | nodes []bhomebus.NetNode |
| | | } |
| | | |
| | | type ProcInfo struct { |
| | | Name string `json:"name"` // 进程名称 |
| | | ID string `json:"id"` // 进程唯一标识 |
| | | Info string `json:"info"` // 进程的描述信息,用于区分同一进程名称下多个进程 |
| | | } |
| | | |
| | | type MsgInfo struct { |
| | | SrcProc ProcInfo `json:"srcProc"` // 源进程基本信息 |
| | | MsgType string `json:"msgType"` // 数据类型,可为请求、发布、订阅、应答等 |
| | | Topic string `json:"topic"` //请求主题 |
| | | Body []byte `json:"body"` //请求内容 |
| | | Body []byte `json:"body"` //请求内容或者反馈结果 |
| | | } |
| | | |
| | | type request struct { |
| | |
| | | defer s.Close() |
| | | var ret []bhomebus.Mesg |
| | | if n := s.SendandrecvTimeout(nodes, data, &ret, 5000);n == 0 { //n==0表示没有请求成功 |
| | | return nil, fmt.Errorf("s.SendandrecvTimeout result n:%d", n) |
| | | return nil, fmt.Errorf("doReq s.SendandrecvTimeout result n:%d", n) |
| | | } else { |
| | | logPrint("doReq SendandrecvTimeout n:", n) |
| | | if len(ret) > 0 { |
| | | return ret[0].Data, nil |
| | | var retMsg MsgInfo |
| | | err = json.Unmarshal(ret[0].Data, &retMsg) |
| | | if err != nil { |
| | | logPrint("doReq unmarshal to MsgInfo err:", err) |
| | | return nil, err |
| | | } |
| | | return retMsg.Body, nil |
| | | } |
| | | return nil, fmt.Errorf("no any response") |
| | | } |