| | |
| | | Topic: TOPIC_QUERYTOPIC, |
| | | Body: []byte(topic), |
| | | }) |
| | | h.printLog("marshal req err:", err) |
| | | if err != nil { |
| | | return nil, fmt.Errorf("marshal req err:%s", err.Error()) |
| | | } |
| | | var ret []bhomebus.Mesg |
| | | n := h.sockWorker.sock.SendandrecvTimeout(reqNetNode, reqD, &ret, h.conf.sendTimeOut) |
| | | h.printLog("getNetNodeByTopic ret n:", n) |
| | | if n > 0 { |
| | | var reply CommonReply |
| | | err = json.Unmarshal(ret[0].Data, &reply) |
| | | h.printLog("unmarshal err:", err) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | h.printLog("reply.Status:", reply.Status) |
| | | if reply.Status == REPLY_SUCCESS { |
| | | err = json.Unmarshal(reply.Body, &nodes) |
| | | h.printLog("unmarshal err:", err, "nodes:", nodes) |
| | | if err == nil { |
| | | return nodes, nil |
| | | } else { |
| | |
| | | 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) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | //2.将请求返送到对应的server,并等待返回值 |
| | | data, err := json.Marshal(*req) |
| | | h.printLog("marshal(*req) err:", err) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | |
| | | //获取本机中某一个主题的 key (结果只有一个元素) |
| | | func (ms *MicroNode) GetLocalNetNodeByTopic(topicName string) []bhomebus.NetNode { |
| | | netNodes, err := ms.handle.GetNetNodeByTopic(ms.serverId, ms.procInfo, topicName) |
| | | ms.printLog("netNodes:", netNodes, "err:", err) |
| | | if err != nil { |
| | | return nil |
| | | } |