+ if len(pub_port) > 0 {
+ pub_sock, err := ctx.Socket(zmq.Pub)
+ if err != nil {
+ panic(err)
+ }
+ defer func() { if r:= recover(); r != nil { pub_sock.Close(); panic(r) } }()
+
+ if err = pub_sock.Bind(pub_port); err != nil {
+ panic(err)
+ }
+
+ pub_chans = pub_sock.ChannelsBuffer(10)
+ go zmqsHandleError(pub_chans)
+ } else {
+ pub_chans = nil