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