From 6f7957c42c409624ca7a05c54bd35752f996ba68 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期日, 07 二月 2021 15:24:10 +0800 Subject: [PATCH] rm recvandsend --- micronode.go | 158 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 111 insertions(+), 47 deletions(-) diff --git a/micronode.go b/micronode.go index 94161b3..1a409c6 100644 --- a/micronode.go +++ b/micronode.go @@ -90,30 +90,58 @@ ms.handlers = funcMap go ms.startHeartbeat() - //鎺ユ敹璁㈤槄鍒扮殑娑堟伅 - go ms.startRecvSubMsg() - //浣滀负server鍚姩 - ms.serve() -} -//寮�濮嬫帴鏀惰闃呮秷鎭� -func (ms *MicroNode) startRecvSubMsg() { for { select { case <- ms.ctx.Done(): return default: - msgS := ms.handle.GetMsg() + msgS, msgR, keyR := ms.handle.GetMsg() if msgS != nil { //鏀跺埌鍏跺畠杩涚▼鐨勫彂甯冩秷鎭� ms.printLog("Recv Sub Message:", string(msgS.Body)) ms.SubCh <- msgS } + if msgR != nil { + //鏀跺埌鍏跺畠杩涚▼鐨勮姹傛秷鎭� + go ms.serve(msgR, keyR) + } time.Sleep(50 * time.Millisecond) } } + + + + + //鎺ユ敹璁㈤槄鍒扮殑娑堟伅 + //go ms.startRecvSubMsg() + //浣滀负server鍚姩 + //ms.serve() } + +//寮�濮嬫帴鏀惰闃呮秷鎭� +//func (ms *MicroNode) startRecvSubMsg() { +// for { +// select { +// case <- ms.ctx.Done(): +// return +// default: +// msgS, msgR, keyR := ms.handle.GetMsg() +// if msgS != nil { +// //鏀跺埌鍏跺畠杩涚▼鐨勫彂甯冩秷鎭� +// ms.printLog("Recv Sub Message:", string(msgS.Body)) +// ms.SubCh <- msgS +// } +// if msgR != nil { +// //鏀跺埌鍏跺畠杩涚▼鐨勮姹傛秷鎭� +// go ms.serve(msgR, keyR) +// } +// +// time.Sleep(50 * time.Millisecond) +// } +// } +//} func (ms *MicroNode) Request(serverId string, request Request, milliSecs int) (*Reply,error) { t := time.Now() @@ -192,49 +220,85 @@ return nil, fmt.Errorf("GetRegisteredClient list failed") } -func (ms *MicroNode) call(rdata []byte, rkey int, sdata *[]byte) bool { - ri := &Reply{} - if ms.handlers == nil { - ri.Msg = "send wrong addr, check yourself!!!" - } else { - var msgR MsgInfo - err := json.Unmarshal(rdata, &msgR) - if err != nil { - ri.Msg = err.Error() - } else { - var reqBody Request - err = json.Unmarshal(rdata, &msgR.Body) - if err != nil { - ri.Msg = err.Error() - } else { - ms.printLog("srcProc:", reqBody.SrcProc,"reqBody Path:", reqBody.Path, " contentType:", reqBody.ContentType, " formMap:",reqBody.FormMap, " postFormMap:", reqBody.PostFormMap, "to key: ", rkey) - if f,ok := ms.handlers[reqBody.Path];ok { - reqBody.SrcProc = msgR.SrcProc - ri = f(&reqBody) - ms.printLog("call funcMap f,reply:", *ri) - } else { - ms.printLog("ms.funcMap not eixst path: ", reqBody.Path) - ri.Msg = "璇锋眰鐨勬帴鍙d笉瀛樺湪锛岃妫�鏌rl" - } - } - } - } - result, err := json.Marshal(*ri) - if err != nil { - sdata = nil - } else { - sdata = &result - } - return ri.Success -} +//func (ms *MicroNode) call(rdata []byte, rkey int, sdata *[]byte) bool { +// ri := &Reply{} +// if ms.handlers == nil { +// ri.Msg = "send wrong addr, check yourself!!!" +// } else { +// var msgR MsgInfo +// err := json.Unmarshal(rdata, &msgR) +// if err != nil { +// ri.Msg = err.Error() +// } else { +// var reqBody Request +// err = json.Unmarshal(rdata, &msgR.Body) +// if err != nil { +// ri.Msg = err.Error() +// } else { +// ms.printLog("srcProc:", reqBody.SrcProc,"reqBody Path:", reqBody.Path, " contentType:", reqBody.ContentType, " formMap:",reqBody.FormMap, " postFormMap:", reqBody.PostFormMap, "to key: ", rkey) +// if f,ok := ms.handlers[reqBody.Path];ok { +// reqBody.SrcProc = msgR.SrcProc +// ri = f(&reqBody) +// ms.printLog("call funcMap f,reply:", *ri) +// } else { +// ms.printLog("ms.funcMap not eixst path: ", reqBody.Path) +// ri.Msg = "璇锋眰鐨勬帴鍙d笉瀛樺湪锛岃妫�鏌rl" +// } +// } +// } +// } +// result, err := json.Marshal(*ri) +// if err != nil { +// sdata = nil +// } else { +// sdata = &result +// } +// return ri.Success +//} -func (ms *MicroNode) serve() { +//func (ms *MicroNode) serve() { +// if ms.handlers == nil { +// return +// } +// for i:=0;i<10;i++ { +// ms.handle.wg.Add(1) +// go recvandsendRoutine(ms.ctx, ms.handle.sockRep.sock, ms.handle.wg, ms.call, ms.fnLog) +// } +//} + +func (ms *MicroNode) serve(msgR *MsgInfo, p int) { if ms.handlers == nil { return } - for i:=0;i<10;i++ { - ms.handle.wg.Add(1) - go recvandsendRoutine(ms.ctx, ms.handle.sockRep.sock, ms.handle.wg, ms.call, ms.fnLog) + + var reqBody Request + var ri *Reply + err := json.Unmarshal(msgR.Body, &reqBody) + if err != nil { + ms.printLog("serve unmarshal msgR.Body err:", err) + ri = &Reply { + Msg: err.Error(), + } + } else { + ms.printLog("srcProc:", msgR.SrcProc,"reqBody Path:", reqBody.Path, " contentType:", reqBody.ContentType, " formMap:",reqBody.FormMap, " postFormMap:", reqBody.PostFormMap, "to key: ", p) + + if f,ok := ms.handlers[reqBody.Path];ok { + reqBody.SrcProc = msgR.SrcProc + ri = f(&reqBody) + ms.printLog("call funcMap f,reply:", *ri) + } else { + ms.printLog("ms.funcMap not eixst path: ", reqBody.Path) + ri = &Reply{ + Success: false, + Msg: "璇锋眰鐨勬帴鍙d笉瀛樺湪锛岃妫�鏌rl", + Data: "璇锋眰鐨勬帴鍙d笉瀛樺湪锛岃妫�鏌rl", + } + } + } + + retErr := ms.handle.Reply(p, ri) + if retErr != nil { + ms.printLog("retErr:", retErr) } } -- Gitblit v1.8.0