From 11a04ff41abe8e84925249c7118e7b47150fb0ff Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期五, 05 三月 2021 11:22:15 +0800
Subject: [PATCH] 判断数据类型

---
 sbusClient.go |  148 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 108 insertions(+), 40 deletions(-)

diff --git a/sbusClient.go b/sbusClient.go
index 180df1d..39839f2 100644
--- a/sbusClient.go
+++ b/sbusClient.go
@@ -1,10 +1,9 @@
-package dbapi
+package bhomedbapi
 
 import (
 	"basic.com/valib/bhomebus.git"
 	"encoding/json"
 	"errors"
-	"fmt"
 	"strconv"
 )
 
@@ -12,12 +11,20 @@
 	nodes []bhomebus.NetNode
 }
 
-type MsgInfo struct {
-	Topic 			string				`json:"topic"`			//璇锋眰涓婚
-	Body 			[]byte				`json:"body"`			//璇锋眰鍐呭
+type ProcInfo struct {
+	Name 			string 				`json:"name"` // 杩涚▼鍚嶇О
+	ID   			string 				`json:"id"`   // 杩涚▼鍞竴鏍囪瘑
+	Info 			string 				`json:"info"` // 杩涚▼鐨勬弿杩颁俊鎭紝鐢ㄤ簬鍖哄垎鍚屼竴杩涚▼鍚嶇О涓嬪涓繘绋�
 }
 
-type request struct {
+type MsgInfo struct {
+	SrcProc  		ProcInfo   			`json:"srcProc"`    	// 婧愯繘绋嬪熀鏈俊鎭�
+	MsgType   		string 				`json:"msgType"`        // 鏁版嵁绫诲瀷锛屽彲涓鸿姹傘�佸彂甯冦�佽闃呫�佸簲绛旂瓑
+	Topic 			string				`json:"topic"`			//璇锋眰涓婚
+	Body 			[]byte				`json:"body"`			//璇锋眰鍐呭鎴栬�呭弽棣堢粨鏋�
+}
+
+type Request struct {
 	Path        			string              	`json:"path"`
 	Method      			string              	`json:"method"`
 	ContentType 			string              	`json:"contentType"`
@@ -28,26 +35,46 @@
 	Body        			[]byte              	`json:"body"`
 }
 
+type reply struct {
+	Success 			bool 						`json:"success"`
+	Msg 				string 						`json:"msg"`
+	Data 				interface{} 				`json:"data"`
+}
+
 func (sc SBusClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
 	if sc.nodes == nil || len(sc.nodes) == 0 {
 		return nil, errors.New("invalid netNodes")
 	}
 
-	req := request {
+	req := Request{
 		Path:        url,
 		Method:      "GET",
 		ContentType: CONTENT_TYPE_JSON,
 	}
 	fillParam(&req, headers, params, nil)
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := MsgInfo{
+		Topic: req.Path,
+		Body: rb,
+	}
+	rData, err := json.Marshal(rMsg)
+	if err != nil {
+		return nil, err
+	}
+
+	return busReq(rData, sc.nodes)
+	//return doReq(req, sc.nodes)
 }
 
 func (sc SBusClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
 	if sc.nodes == nil || len(sc.nodes) == 0 {
 		return nil, errors.New("invalid port")
 	}
-	req := request {
+	req := Request{
 		Path:        url,
 		Method:      "POST",
 		ContentType: contentType,
@@ -82,38 +109,77 @@
 		}
 	}
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := MsgInfo{
+		Topic: req.Path,
+		Body: rb,
+	}
+	rData, err := json.Marshal(rMsg)
+	if err != nil {
+		return nil, err
+	}
+
+	return busReq(rData, sc.nodes)
 }
 
 func (sc SBusClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
 	if sc.nodes == nil || len(sc.nodes) == 0 {
 		return nil, errors.New("invalid port")
 	}
-	req := request {
+	req := Request{
 		Path:        url,
 		Method:      "PUT",
 		ContentType: contentType,
 	}
 	fillParam(&req, headers, nil, body)
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := MsgInfo{
+		Topic: req.Path,
+		Body: rb,
+	}
+	rData, err := json.Marshal(rMsg)
+	if err != nil {
+		return nil, err
+	}
+
+	return busReq(rData, sc.nodes)
 }
 
 func (sc SBusClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
 	if sc.nodes == nil || len(sc.nodes) == 0 {
 		return nil, errors.New("invalid port")
 	}
-	req := request {
+	req := Request{
 		Path:        url,
 		Method:      "DELETE",
 		ContentType: contentType,
 	}
 	fillParam(&req, headers, nil, body)
 
-	return doReq(req, sc.nodes)
+	rb, err := json.Marshal(req)
+	if err !=nil {
+		return nil,err
+	}
+	rMsg := MsgInfo{
+		Topic: req.Path,
+		Body: rb,
+	}
+	rData, err := json.Marshal(rMsg)
+	if err != nil {
+		return nil, err
+	}
+
+	return busReq(rData, sc.nodes)
 }
 
-func fillParam(req *request,headers map[string]string, params map[string]string, body map[string]interface{}) {
+func fillParam(req *Request,headers map[string]string, params map[string]string, body map[string]interface{}) {
 	headerMap := make(map[string][]string)
 	queryMap := make(map[string][]string)
 	if headers != nil {
@@ -137,28 +203,30 @@
 
 }
 
-func doReq(req request, nodes []bhomebus.NetNode) ([]byte,error) {
-	rb, err := json.Marshal(req)
-	if err !=nil {
-		return nil,err
-	}
-	rMsg := MsgInfo{
-		Topic: req.Path,
-		Body: rb,
-	}
-	data, err := json.Marshal(rMsg)
-	if err != nil {
-		return nil, err
-	}
-	s := bhomebus.OpenSocket()
-	defer s.Close()
-	var ret []bhomebus.Mesg
-	if n := s.SendandrecvTimeout(nodes, data, &ret, 5000);n == 0 {
-		if len(ret) > 0 {
-			return ret[0].Data, nil
-		}
-		return nil, fmt.Errorf("no any response")
-	} else {
-		return nil, fmt.Errorf("s.SendandrecvTimeout result n:%d", n)
-	}
-}
\ No newline at end of file
+//鍦ㄦ澶勪娇鐢∣penSocket浼氬湪Ctrl-C鐨勬椂鍊欙紝瀵艰嚧socket骞舵湭鎴愬姛Close锛屽叡浜唴瀛樺潡涓嶄細閲婃斁.
+//鎵�浠ユ帶鍒跺叡浜唴瀛樺潡鐨勬垚鍔熷洖鏀堕渶瑕佸湪涓婂眰鍋�,鐒跺悗璋僆nitDoReq灏嗗嚱鏁版寚閽堜紶閫掕繘鏉�
+//func doReq(req Request, nodes []bhomebus.NetNode) ([]byte,error) {
+//	rb, err := json.Marshal(req)
+//	if err !=nil {
+//		return nil,err
+//	}
+//	rMsg := MsgInfo{
+//		Topic: req.Path,
+//		Body: rb,
+//	}
+//	data, err := json.Marshal(rMsg)
+//	if err != nil {
+//		return nil, err
+//	}
+//	s := bhomebus.OpenSocket()
+//	defer s.Close()
+//	var ret []bhomebus.Mesg
+//	if n := s.SendandrecvTimeout(nodes, data, &ret, 5000);n == 0 {  //n==0琛ㄧず娌℃湁璇锋眰鎴愬姛
+//		return nil, fmt.Errorf("doReq s.SendandrecvTimeout result n:%d", n)
+//	} else {
+//		if len(ret) > 0 {
+//			return ret[0].Data, nil
+//		}
+//		return nil, fmt.Errorf("no any response")
+//	}
+//}
\ No newline at end of file

--
Gitblit v1.8.0