}
}
+func ZmqsBindNewReplySocket(ctx *zmq.Context, addr string) (chans *zmq.Channels, err error) {
+ if len(addr) == 0 {
+ return nil, errors.New("No listen address given")
+ }
+ sock, err := ctx.Socket(zmq.Rep)
+ if err != nil { return nil, err}
+
+ if err = sock.Bind(addr); err != nil {
+ sock.Close()
+ return nil, err
+ }
+
+ chans = sock.ChannelsBuffer(10)
+ go zmqsHandleError(chans)
+
+ return chans, nil
+}
+
func ZmqsRequestAnswer(sock *zmq.Socket, request [][]byte) (answer [][]byte) {
if err := sock.Send(request); err != nil {
panic(err)
return parts
}
+func ZmqsAskQuestionsAndClose(ctx *zmq.Context, addr string, questions [][][]byte) [][][]byte {
+ if len(addr) == 0 || ctx == nil { return nil }
+
+ req_sock, err := ctx.Socket(zmq.Req)
+ if err != nil {
+ return nil
+ }
+ defer req_sock.Close()
+
+ if err = req_sock.Connect(addr); err != nil {
+ return nil
+ }
+
+ rv := make([][][]byte, len(questions))
+ for index, q := range(questions) {
+ rv[index] = ZmqsRequestAnswer(req_sock, q)
+ }
+ return rv
+}
+
func LookupCardIdNick(s *zmq.Socket, hexbytes []byte) (string, error) {
answ := ZmqsRequestAnswer(s, [][]byte{hexbytes})
if len(answ) == 0 {