| | |
| | | }) |
| | | } |
| | | var rMsg []bhomebus.Mesg |
| | | if n := regSock.Sendandrecv(regAddr, msg, &rMsg); n == 0 { |
| | | if len(rMsg) == 1 { |
| | | var rr RegisterReply |
| | | if err = json.Unmarshal(rMsg[0].Data, &rr);err != nil { |
| | | handle.printLog("unmarshal regReply err:", err) |
| | | return nil, errors.New("unmarshal regReply err:"+err.Error()) |
| | | } else { |
| | | regR = &rr |
| | | break loop |
| | | } |
| | | n := regSock.Sendandrecv(regAddr, msg, &rMsg) |
| | | handle.printLog("regSock.Sendandrecv n:", n, "len(rMsg):", len(rMsg)) |
| | | if n == 0 && len(rMsg) == 1 { |
| | | var rr RegisterReply |
| | | if err = json.Unmarshal(rMsg[0].Data, &rr);err != nil { |
| | | handle.printLog("unmarshal regReply err:", err) |
| | | return nil, errors.New("unmarshal regReply err:"+err.Error()) |
| | | } else { |
| | | regR = &rr |
| | | break loop |
| | | } |
| | | } else { |
| | | time.Sleep(100 * time.Millisecond) |
| | |
| | | for _,v := range h.m { |
| | | v.sock.Close() |
| | | } |
| | | h.sockRep.sock.Close() |
| | | h.sockRep = nil |
| | | h.sockHB.sock.Close() |
| | | h.sockHB = nil |
| | | h.sockPub.sock.Close() |
| | | h.sockPub = nil |
| | | h.sockSub.sock.Close() |
| | | h.sockSub = nil |
| | | h.sockWorker.sock.Close() |
| | | h.sockWorker = nil |
| | | |
| | | if h.sockRep != nil { |
| | | h.sockRep.sock.Close() |
| | | h.sockRep = nil |
| | | } |
| | | if h.sockHB != nil { |
| | | h.sockHB.sock.Close() |
| | | h.sockHB = nil |
| | | } |
| | | if h.sockPub != nil { |
| | | h.sockPub.sock.Close() |
| | | h.sockPub = nil |
| | | } |
| | | if h.sockSub != nil { |
| | | h.sockSub.sock.Close() |
| | | h.sockSub = nil |
| | | } |
| | | if h.sockWorker != nil { |
| | | h.sockWorker.sock.Close() |
| | | h.sockWorker = nil |
| | | } |
| | | bhomebus.Release() |
| | | |
| | | h.printLog("BHBus Freed") |