From 0120491f6551545b19114de049713c7e928ebc01 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期三, 20 一月 2021 15:43:04 +0800 Subject: [PATCH] 去掉CommonReply,统一使用Reply结构,减少消息解封装 --- message.go | 18 +++--- micronode.go | 61 ++++--------------- hbusc.go | 55 ++++++++++------- 3 files changed, 55 insertions(+), 79 deletions(-) diff --git a/hbusc.go b/hbusc.go index 958d74e..5d50bef 100644 --- a/hbusc.go +++ b/hbusc.go @@ -156,22 +156,25 @@ var rMsg []bhomebus.Mesg n := regSock.Sendandrecv(regAddr, msg, &rMsg) //n浠h〃鎴愬姛鍙戦�佺殑鑺傜偣鐨勪釜鏁� if n == 1 && len(rMsg) == 1 { - var cr CommonReply + var cr Reply if err = json.Unmarshal(rMsg[0].Data, &cr);err != nil { handle.printLog("unmarshal regReply err:", err) return nil, errors.New("unmarshal regReply err:"+err.Error()) } else { - if cr.Status == REPLY_SUCCESS { - var rr RegisterReply - if err = json.Unmarshal(cr.Body, &rr);err ==nil { - regR = &rr - break loop + if cr.Success { + if rpd,err := json.Marshal(cr.Data);err ==nil { + var rr RegisterReply + if err = json.Unmarshal(rpd, &rr); err == nil { + regR = &rr + break loop + } else { + handle.printLog("unmarshal RegisterReply err:", err) + } } else { - handle.printLog("unmarshal RegisterReply err:", err) + handle.printLog("marshal cr.Data err:", err) } - } else { - handle.printLog("cr.Status:", cr.Status, "Desc:", cr.Desc) + handle.printLog("cr:", cr) } } @@ -388,31 +391,37 @@ var ret []bhomebus.Mesg n := h.sockWorker.sock.SendandrecvTimeout(reqNetNode, reqD, &ret, h.conf.sendTimeOut) if n > 0 { - var reply CommonReply + var reply Reply err = json.Unmarshal(ret[0].Data, &reply) if err != nil { h.printLog("unmarshal err:", err) return nil, err } - if reply.Status == REPLY_SUCCESS { - err = json.Unmarshal(reply.Body, &nodes) + if reply.Success { + rd,err := json.Marshal(reply.Data) if err == nil { - return nodes, nil + err = json.Unmarshal(rd, &nodes) + if err == nil { + return nodes, nil + } else { + h.printLog("unmarshal err:", err, "nodes:", nodes) + return nil, fmt.Errorf("unmarshal to nodes err:%s", err.Error()) + } } else { - h.printLog("unmarshal err:", err, "nodes:", nodes) - return nil, fmt.Errorf("unmarshal reply.Body err:%s", err.Error()) + return nil, fmt.Errorf("marshal reply.Data err:%s", err.Error()) } + } else { - h.printLog("reply status:", reply.Status, "desc:", reply.Desc, "body:", string(reply.Body)) - return nil, fmt.Errorf("REPLY STATUS:%d", reply.Status) + h.printLog("reply success:", reply.Success, "msg:", reply.Msg, "data:", reply.Data) + return nil, fmt.Errorf("REPLY msg:%s", reply.Msg) } } else { return nil, fmt.Errorf("GetNetNodeByTopic ret n:%d", n) } } -func (h *BHBus) Request(serverId string, req *MsgInfo, milliSecs int) (*MsgInfo, error) { +func (h *BHBus) Request(serverId string, req *MsgInfo, milliSecs int) (*Reply, error) { //1.棣栧厛闇�瑕侀�氳繃topic鎷垮埌鏈満瀵瑰簲鐨凬etNode rNodes, err := h.GetNetNodeByTopic(serverId, &req.SrcProc, req.Topic) h.printLog("topic", req.Topic, "rNodes:", rNodes, "err:", err) @@ -431,7 +440,7 @@ h.printLog("Request n: ", n, " len(ret): ", len(ret)) if n > 0 && len(ret) > 0 { - var resp MsgInfo + var resp Reply if err = json.Unmarshal(ret[0].Data, &resp); err == nil { return &resp, nil } else { @@ -442,8 +451,8 @@ return nil, fmt.Errorf("request err") } -func (h *BHBus) Reply(replyKey int, i MsgInfo) error { - data,err := json.Marshal(i) +func (h *BHBus) Reply(replyKey int, i *Reply) error { + data,err := json.Marshal(*i) if err != nil { return err } @@ -473,7 +482,7 @@ return nil } -func (h *BHBus) RequestCenter(req *MsgInfo) (*CommonReply, error) { +func (h *BHBus) RequestCenter(req *MsgInfo) (*Reply, error) { data, err := json.Marshal(*req) if err != nil { return nil, err @@ -487,7 +496,7 @@ n := h.sockWorker.sock.SendandrecvTimeout(rNodes, data,&ret, h.conf.sendTimeOut) h.printLog("requestCenter n:", n, "len(ret):", len(ret)) if n > 0 && len(ret) > 0{ - var cr CommonReply + var cr Reply if err = json.Unmarshal(ret[0].Data, &cr); err == nil { return &cr, nil } else { diff --git a/message.go b/message.go index aea3e7e..9ba85b9 100644 --- a/message.go +++ b/message.go @@ -19,15 +19,15 @@ TOPIC_QUERYPROC string = "Topic_QueryProc" ) -const ( - REPLY_SUCCESS int = 200 - REPLY_FAILED int = 202 -) -type CommonReply struct { - Status int `json:"status"` // 璇锋眰鐘舵��,鐩墠鍙湁涓や釜,鎴愬姛杩斿洖200,澶辫触202 - Desc string `json:"desc"` // 璇锋眰鐘舵�佺殑鎻忚堪,鎴愬姛"success",澶辫触杩斿洖澶辫触鍘熷洜,濡傚績璺虫湇鍔℃湭鍚姩 - Body []byte `json:"body"` // 杩斿洖鍊肩殑鍏蜂綋鍐呭,鐢ㄦ埛绾﹀畾 -} +//const ( +// REPLY_SUCCESS int = 200 +// REPLY_FAILED int = 202 +//) +//type CommonReply struct { +// Status int `json:"status"` // 璇锋眰鐘舵��,鐩墠鍙湁涓や釜,鎴愬姛杩斿洖200,澶辫触202 +// Desc string `json:"desc"` // 璇锋眰鐘舵�佺殑鎻忚堪,鎴愬姛"success",澶辫触杩斿洖澶辫触鍘熷洜,濡傚績璺虫湇鍔℃湭鍚姩 +// Body []byte `json:"body"` // 杩斿洖鍊肩殑鍏蜂綋鍐呭,鐢ㄦ埛绾﹀畾 +//} const ( NODE_ALIVE int = 0 diff --git a/micronode.go b/micronode.go index 0b033db..03316b9 100644 --- a/micronode.go +++ b/micronode.go @@ -121,25 +121,7 @@ Body: rb, } ms.printLog("2:", time.Since(t)) - t = time.Now() - mi,err := ms.handle.Request(serverId, msgR, milliSecs) - if mi == nil || err != nil { - return nil, err - } - ms.printLog("3:", time.Since(t)) - t = time.Now() - ri := new(Reply) - err = json.Unmarshal(mi.Body, ri) - if err != nil { - ms.printLog("unmarshal mi.Body err:", err) - ri = &Reply{ - Success: false, - Msg: "鏈嶅姟璇锋眰澶辫触", - Data: "鏈嶅姟璇锋眰澶辫触", - } - } - ms.printLog("4:", time.Since(t)) - return ri, nil + return ms.handle.Request(serverId, msgR, milliSecs) } func (ms *MicroNode) RequestTopic(serverId string, request Request, milliSecs int) (*Reply,error) { @@ -149,20 +131,7 @@ Body: rb, } - mi, err := ms.handle.Request(serverId, msgR, milliSecs) - if err != nil { - return nil, err - } - var ri *Reply - err = json.Unmarshal(mi.Body, ri) - if err != nil { - ri = &Reply{ - Success: false, - Msg: "鏈嶅姟璇锋眰澶辫触", - Data: "鏈嶅姟璇锋眰澶辫触", - } - } - return ri, nil + return ms.handle.Request(serverId, msgR, milliSecs) } //鑾峰彇鏈満涓煇涓�涓富棰樼殑 key 锛堢粨鏋滃彧鏈変竴涓厓绱狅級 @@ -195,16 +164,21 @@ ms.printLog("requestCenter reply:", cr, "err:", err) return nil, err } - if cr.Status == REPLY_SUCCESS && cr.Body != nil { - var list []RegisteredClient - err = json.Unmarshal(cr.Body, &list) + if cr.Success { + rd,err := json.Marshal(cr.Data) if err == nil { - return list, nil + var list []RegisteredClient + err = json.Unmarshal(rd, &list) + if err == nil { + return list, nil + } else { + ms.printLog("unmarshal to RegisteredClient list err:", err) + } } else { - ms.printLog("unmarshal to RegisteredClient list err:", err) + return nil, fmt.Errorf("marshal reply.Data err:%s", err.Error()) } } else { - ms.printLog("request center failed,status:", cr.Status, "desc:", cr.Desc) + ms.printLog("request center failed,status:", cr.Success, "msg:", cr.Msg, " data:", cr.Data) } return nil, fmt.Errorf("GetRegisteredClient list failed") } @@ -234,14 +208,7 @@ Data: "璇锋眰鐨勬帴鍙d笉瀛樺湪锛岃妫�鏌rl", } } - rd,err := json.Marshal(*ri) - if err != nil { - ms.printLog("marshal *ri err:", err) - } - rMsg := MsgInfo{ - Body: rd, - } - retErr := ms.handle.Reply(p, rMsg) + retErr := ms.handle.Reply(p, ri) if retErr != nil { ms.printLog("retErr:", retErr) } -- Gitblit v1.8.0