From aaae9917c3df122e2bbcf591417c1b58021d79fc Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期三, 15 五月 2019 16:58:03 +0800 Subject: [PATCH] add close --- nng.go | 43 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 38 insertions(+), 5 deletions(-) diff --git a/nng.go b/nng.go index 84d3699..61b5e76 100644 --- a/nng.go +++ b/nng.go @@ -5,6 +5,7 @@ "fmt" "os" "strings" + "time" "nanomsg.org/go-mangos" "nanomsg.org/go-mangos/protocol/bus" @@ -31,11 +32,17 @@ 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 { msg := mangos.NewMessage(len(data)) msg.Body = data return n.sock.SendMsg(msg) } + return n.sock.Send(data) } @@ -49,6 +56,13 @@ return msg.Body, err } return n.sock.Recv() +} + +// Close impl interface Deliver +func (n *NNG) Close() { + if n.sock != nil { + n.sock.Close() + } } // nngProducer create from deliver Mode @@ -92,12 +106,15 @@ return nil } -// MaxRecvSize max recv size -var MaxRecvSize = 33 * 1024 * 1024 +// maxRecvSize max recv size +var ( + maxRecvSize = 33 * 1024 * 1024 + surveyorTime = time.Second / 2 +) func defualtSocketOptions(sock mangos.Socket) error { var err error - if err = sock.SetOption(mangos.OptionMaxRecvSize, MaxRecvSize); err != nil { + if err = sock.SetOption(mangos.OptionMaxRecvSize, maxRecvSize); err != nil { sock.Close() return err } @@ -109,7 +126,11 @@ sock.Close() return err } - // if err = sock.SetOption(mangos.OptionNoDelay, true); err != nil { + // 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 // } @@ -127,7 +148,8 @@ if err != nil { return err } - if sock.GetProtocol().Number() == mangos.ProtoSub { + switch sock.GetProtocol().Number() { + case mangos.ProtoSub: for _, arg := range args { switch arg.(type) { case string: @@ -136,6 +158,17 @@ err = sock.SetOption(mangos.OptionSubscribe, []byte("")) } } + case mangos.ProtoSurveyor: + for _, arg := range args { + switch arg.(type) { + case int: + surveyorTime = time.Duration(arg.(int)/2) * time.Second + default: + } + err = sock.SetOption(mangos.OptionSurveyTime, surveyorTime) + } + default: + fmt.Println("no additional args") } return nil -- Gitblit v1.8.0