| | |
| | | func (h *BHBus) Request(serverId string, req *MsgInfo, milliSecs int) (resp *MsgInfo, err error) { |
| | | //1.首先需要通过topic拿到本机对应的NetNode |
| | | rNodes, err := h.GetNetNodeByTopic(serverId, &req.SrcProc, req.Topic) |
| | | h.printLog("rNodes:", rNodes, "err:", err) |
| | | h.printLog("topic", req.Topic, "rNodes:", rNodes, "err:", err) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | |
| | | } |
| | | var ret []bhomebus.Mesg |
| | | |
| | | if n := h.sockWorker.sock.SendandrecvTimeout(rNodes, data,&ret, milliSecs);n > 0 { |
| | | if len(ret) > 0 { |
| | | if err = json.Unmarshal(ret[0].Data, resp); err == nil { |
| | | return resp, nil |
| | | } |
| | | n := h.sockWorker.sock.SendandrecvTimeout(rNodes, data,&ret, milliSecs) |
| | | h.printLog("Request n: ", n, " len(ret): ", len(ret)) |
| | | if n > 0 && len(ret) > 0 { |
| | | if err = json.Unmarshal(ret[0].Data, resp); err == nil { |
| | | return resp, nil |
| | | } else { |
| | | h.printLog("unmarshal ret[0].Data err:", err) |
| | | return nil, err |
| | | } |
| | | } |
| | | return nil, fmt.Errorf("request err") |
| | |
| | | |
| | | func (ms *MicroNode) Request(serverId string, request Request) (*Reply,error) { |
| | | t := time.Now() |
| | | topicName := request.Header("Servicename") |
| | | |
| | | if topicName == "" { |
| | | return nil,errors.New("Servicename 不能为空") |
| | | } |
| | | ms.printLog("1:", time.Since(t)) |
| | | t = time.Now() |
| | | rb, _ := json.Marshal(request) |