use MsgQueryTopicReply_BHNodeAddress
| | |
| | | //获取topic对应的key |
| | | //如果传了serverId不为空,则获取指定机器上的topic-key |
| | | //如果server为空,则获取所有节点上topic-key |
| | | func (h *BHBus) GetNetNodeByTopic(serverId string,srcProc *ProcInfo, topic string) ([]bhome_msg.BHAddress,error) { |
| | | |
| | | return nil, nil |
| | | func (h *BHBus) GetNetNodeByTopic(serverId string,srcProc *ProcInfo, topic string) ([]*bhome_msg.MsgQueryTopicReply_BHNodeAddress,error) { |
| | | dest := bhome_msg.BHAddress{} |
| | | reqTopic := bhome_msg.MsgQueryTopic{ |
| | | Topic: []byte(topic), |
| | | } |
| | | rep := bhome_msg.MsgQueryTopicReply{} |
| | | if bhsgo.QueryTopicAddress(&dest, &reqTopic, &rep, h.conf.sendTimeOut) { |
| | | return rep.NodeAddress, nil |
| | | } |
| | | if rep.Errmsg != nil { |
| | | h.printLog("QueryTopicAddress errCode:", rep.Errmsg.ErrCode, "errMsg:", string(rep.Errmsg.ErrString)) |
| | | return nil, errors.New(string(rep.Errmsg.ErrString)) |
| | | } |
| | | return nil, errors.New("bhsgo.QueryTopicAddress ret false") |
| | | } |
| | | |
| | | func (h *BHBus) Request(serverId string, req *bhome_msg.MsgRequestTopic, milliSecs int) (*Reply, error) { |
| | |
| | | } |
| | | } |
| | | |
| | | func (h *BHBus) RequestOnly(req *bhome_msg.MsgRequestTopic, destArr []bhome_msg.BHAddress) ([]byte, error) { |
| | | func (h *BHBus) RequestOnly(req *bhome_msg.MsgRequestTopic, destArr []*bhome_msg.MsgQueryTopicReply_BHNodeAddress) ([]byte, error) { |
| | | dest := bhome_msg.BHAddress{} |
| | | if destArr != nil && len(destArr) > 0 { |
| | | dest = destArr[0] |
| | | if destArr[0].Addr != nil { |
| | | dest = *(destArr[0].Addr) |
| | | } |
| | | } |
| | | pid := "" |
| | | r := bhome_msg.MsgRequestTopicReply{} |
| | |
| | | return ms.handle.Request(serverId, msgR, milliSecs) |
| | | } |
| | | |
| | | func (ms *MicroNode) RequestOnly(req *bhome_msg.MsgRequestTopic, dest []bhome_msg.BHAddress) ([]byte, error) { |
| | | func (ms *MicroNode) RequestOnly(req *bhome_msg.MsgRequestTopic, dest []*bhome_msg.MsgQueryTopicReply_BHNodeAddress) ([]byte, error) { |
| | | return ms.handle.RequestOnly(req, dest) |
| | | } |
| | | |
| | | //获取本机中某一个主题的 key (结果只有一个元素) |
| | | func (ms *MicroNode) GetLocalNetNodeByTopic(topicName string) []bhome_msg.BHAddress { |
| | | func (ms *MicroNode) GetLocalNetNodeByTopic(topicName string) []*bhome_msg.MsgQueryTopicReply_BHNodeAddress { |
| | | netNodes, err := ms.handle.GetNetNodeByTopic(ms.serverId, ms.procInfo, topicName) |
| | | if err != nil { |
| | | ms.printLog("topic:",topicName, " netNodes:", netNodes, "err:", err) |
| | |
| | | } |
| | | |
| | | //获取集群中所有节点某个主题的key信息, (结果可能有多个) |
| | | func (ms *MicroNode) GetAllNetNodesByTopic(topicName string) []bhome_msg.BHAddress { |
| | | netNodes, err := ms.handle.GetNetNodeByTopic("", ms.procInfo, topicName) |
| | | if err != nil { |
| | | return nil |
| | | } |
| | | return netNodes |
| | | } |
| | | //func (ms *MicroNode) GetAllNetNodesByTopic(topicName string) []bhome_msg.BHAddress { |
| | | // netNodes, err := ms.handle.GetNetNodeByTopic("", ms.procInfo, topicName) |
| | | // if err != nil { |
| | | // return nil |
| | | // } |
| | | // return netNodes |
| | | //} |
| | | |
| | | func (ms *MicroNode) GetRegisteredClient() ([]*bhome_msg.MsgQueryProcReply_Info,error) { |
| | | return ms.handle.RequestCenter() |