From 2d390df9ede39c9d7c34bd8190b9329cfc371325 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期五, 27 九月 2019 16:19:05 +0800 Subject: [PATCH] remove exist ipc --- nng.go | 43 +++++++++++++++++++++++++------------------ 1 files changed, 25 insertions(+), 18 deletions(-) diff --git a/nng.go b/nng.go index 1e9c1c0..812cc37 100644 --- a/nng.go +++ b/nng.go @@ -21,26 +21,21 @@ "nanomsg.org/go-mangos/transport/all" ) -// type deliver -type td int - -const ( - agent = td(iota) - coactee -) - // NNG mangos wrap type NNG struct { - sock mangos.Socket - server bool - mode Mode - url string + sock mangos.Socket + typ td + mode Mode + url string arguments []interface{} } // Send impl interface Diliver func (n *NNG) Send(data []byte) error { + if n == nil { + return errors.New("please init NNG first") + } var err error if n.sock == nil { n.sock, err = n.makeNNG(agent) @@ -54,14 +49,17 @@ time.Sleep(time.Duration(surveyorTime*2) * time.Second) } - msg := mangos.NewMessage(len(data)) + msg := mangos.NewMessage(1) msg.Body = data return n.sock.SendMsg(msg) - } // Recv impl interface Diliver func (n *NNG) Recv() ([]byte, error) { + if n == nil { + return nil, errors.New("please init NNG first") + } + var err error if n.sock == nil { @@ -80,9 +78,16 @@ } +// Recv2 impl interface +func (n *NNG) Recv2(data []byte) (l int, err error) { + data, err = n.Recv() + l = len(data) + return l, err +} + // Close impl interface Deliver func (n *NNG) Close() { - if n.sock != nil { + if n != nil && n.sock != nil { n.sock.Close() n.sock = nil } @@ -93,7 +98,7 @@ rmExistedIpcName(url) return &NNG{ - server: true, + typ: agent, mode: m, url: url, arguments: args, @@ -103,7 +108,7 @@ func nngClient(m Mode, url string, args ...interface{}) *NNG { return &NNG{ - server: false, + typ: coactee, mode: m, url: url, arguments: args, @@ -128,7 +133,7 @@ switch n.mode { case Bus: sock, err = n.busMakeNNG(typ) - case ReqRep: + case ReqRep, SurvResp: sock, err = n.rrMakeNNG(typ) default: sock, err = n.ppMakeNNG(typ) @@ -143,6 +148,8 @@ if s[0] == "ipc" { if _, err := os.Stat(s[1]); err == nil { os.Remove(s[1]) + } else if !os.IsNotExist(err) { + os.Remove(s[1]) } } } -- Gitblit v1.8.0