From 5ff1f32410e0697e581f6c389c8c22c5abd474c0 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 16 五月 2019 15:17:32 +0800 Subject: [PATCH] fix --- nng.go | 44 +++++++++++++++++++++++++++++++------------- 1 files changed, 31 insertions(+), 13 deletions(-) diff --git a/nng.go b/nng.go index 01539a3..6cf8b52 100644 --- a/nng.go +++ b/nng.go @@ -24,6 +24,7 @@ // NNG mangos wrap type NNG struct { sock mangos.Socket + raw bool } // Send impl interface Diliver @@ -32,12 +33,12 @@ return errors.New("please init NNG first") } - switch n.sock.GetProtocol().Number() { - case mangos.ProtoSurveyor: - time.Sleep(surveyorTime * 2) - default: - } - if _, err := n.sock.GetOption(mangos.OptionRaw); err == nil { + // switch n.sock.GetProtocol().Number() { + // case mangos.ProtoSurveyor: + // time.Sleep(surveyorTime * 2) + // default: + // } + if n.raw { msg := mangos.NewMessage(len(data)) msg.Body = data return n.sock.SendMsg(msg) @@ -51,11 +52,22 @@ if n.sock == nil { return nil, errors.New("please init NNG first") } - if _, err := n.sock.GetOption(mangos.OptionRaw); err == nil { - msg, err := n.sock.RecvMsg() - return msg.Body, err + if n.raw { + var msg *mangos.Message + var err error + if msg, err = n.sock.RecvMsg(); err != nil { + return nil, err + } + return msg.Body, nil } return n.sock.Recv() +} + +// Close impl interface Deliver +func (n *NNG) Close() { + if n.sock != nil { + n.sock.Close() + } } // nngProducer create from deliver Mode @@ -72,6 +84,7 @@ } return &NNG{ sock, + true, } } @@ -93,6 +106,7 @@ return &NNG{ sock, + true, } } @@ -119,10 +133,14 @@ sock.Close() return err } - // if err = sock.SetOption(mangos.OptionNoDelay, true); err != nil { - // sock.Close() - // return err - // } + if err = sock.SetOption(mangos.OptionRecvDeadline, time.Second); err != nil { + sock.Close() + return err + } + if err = sock.SetOption(mangos.OptionSendDeadline, time.Second); err != nil { + sock.Close() + return err + } if err = sock.SetOption(mangos.OptionRaw, true); err != nil { sock.Close() return err -- Gitblit v1.8.0