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