From eb139e1dbd3b962a36dba95024d823f7c76ab81d Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 02 六月 2021 15:45:47 +0800
Subject: [PATCH] use MsgQueryTopicReply_BHNodeAddress
---
micronode.go | 18 +++++++++---------
hbusc.go | 23 ++++++++++++++++++-----
2 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/hbusc.go b/hbusc.go
index a09ea0e..bf9cc94 100644
--- a/hbusc.go
+++ b/hbusc.go
@@ -218,9 +218,20 @@
//鑾峰彇topic瀵瑰簲鐨刱ey
//濡傛灉浼犱簡serverId涓嶄负绌猴紝鍒欒幏鍙栨寚瀹氭満鍣ㄤ笂鐨則opic-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) {
@@ -243,10 +254,12 @@
}
}
-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{}
diff --git a/micronode.go b/micronode.go
index d7189af..af16f1b 100644
--- a/micronode.go
+++ b/micronode.go
@@ -135,12 +135,12 @@
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)
@@ -150,13 +150,13 @@
}
//鑾峰彇闆嗙兢涓墍鏈夎妭鐐规煇涓富棰樼殑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()
--
Gitblit v1.8.0