From 30d84da3e5cba31c3318f6228406026e51c9574e Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 12 Jan 2018 18:44:00 -0700 Subject: [PATCH] build+chain: replace pebbe/zmq4 with lightninglabs/gozmq (native Go) --- chain/bitcoind.go | 54 ++++++++++++----------------------------------- glide.lock | 9 ++++++-- glide.yaml | 2 +- 3 files changed, 22 insertions(+), 43 deletions(-) diff --git a/chain/bitcoind.go b/chain/bitcoind.go index 0fb42c7..1f4d9f2 100644 --- a/chain/bitcoind.go +++ b/chain/bitcoind.go @@ -5,10 +5,11 @@ import ( "container/list" "encoding/hex" "errors" + "net" "sync" "time" - "github.com/pebbe/zmq4" + "github.com/lightninglabs/gozmq" "github.com/roasbeef/btcd/btcjson" "github.com/roasbeef/btcd/chaincfg" "github.com/roasbeef/btcd/chaincfg/chainhash" @@ -511,44 +512,13 @@ func (c *BitcoindClient) socketHandler() { defer c.wg.Done() // Connect a ZMQ socket for block notifications - zmqCtx, err := zmq4.NewContext() - if err != nil { - log.Error(err) - return - } - defer func() { - if zmqCtx != nil { - err = zmqCtx.Term() - log.Infof("ZMQ context terminated: %v\n", err) - } - }() - zmqClient, err := zmqCtx.NewSocket(zmq4.SUB) - if err != nil { - log.Error(err) - return - } - defer func() { - if zmqClient != nil { - err = zmqClient.Close() - log.Infof("ZMQ socket closed: %v\n", err) - } - }() - err = zmqClient.SetSubscribe("rawblock") - if err != nil { - log.Error(err) - return - } - err = zmqClient.SetSubscribe("rawtx") - if err != nil { - log.Error(err) - return - } - err = zmqClient.SetRcvtimeo(c.zmqPollInterval) - err = zmqClient.Connect(c.zmqConnect) + zmqClient, err := gozmq.Subscribe(c.zmqConnect, []string{"rawblock", + "rawtx"}, c.zmqPollInterval) if err != nil { log.Error(err) return } + defer zmqClient.Close() log.Infof("Started listening for blocks via ZMQ on %s", c.zmqConnect) c.onClientConnect() @@ -635,12 +605,16 @@ mainLoop: } // Now, poll events from bitcoind. - msgBytes, err := zmqClient.RecvMessageBytes(0) - if err == zmq4.Errno(0xb) { // EAGAIN - timeout on recv - continue mainLoop - } + msgBytes, err := zmqClient.Receive() if err != nil { - log.Error(err) + switch e := err.(type) { + case net.Error: + if !e.Timeout() { + log.Error(err) + } + default: + log.Error(err) + } continue mainLoop } diff --git a/glide.lock b/glide.lock index 0905a90..9175e7e 100644 --- a/glide.lock +++ b/glide.lock @@ -10,6 +10,7 @@ <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD hash: 2fe59efc96b0a2839297653da88cde89208f8f8cf4ced2bb1e828def57e3611b updated: 2017-07-19T11:33:58.0769452-04:00 ======= @@ -59,6 +60,10 @@ updated: 2017-11-18T15:17:20.95646706-08:00 hash: 83bb1c0a0f5c6396d2387746544592662898af52596d5cdca898b6fbfaa60841 updated: 2017-11-29T14:42:36.82153259-06:00 >>>>>>> 7a32017... multi: add bitcoind back-end (only for API use for now) +======= +hash: 8fdbf966a888ff626d377d985e34c32518f81e96dc661433184ce011bad062b2 +updated: 2018-01-12T18:42:39.220877425-07:00 +>>>>>>> 6c1491e... build+chain: replace pebbe/zmq4 with lightninglabs/gozmq (native Go) imports: - name: github.com/aead/siphash version: e404fcfc888570cadd1610538e2dbc89f66af814 @@ -179,8 +184,8 @@ imports: subpackages: - filterdb - headerfs -- name: github.com/pebbe/zmq4 - version: 90d69e412a09549f2e90bac70fbb449081f1e5c1 +- name: github.com/lightninglabs/gozmq + version: b0bbb30a99d00b25c3304994d20aac68607b75c0 - name: github.com/roasbeef/btcd version: 5d9e4e1fa749fa2f1675802a4c9f10ef0ada04d1 subpackages: diff --git a/glide.yaml b/glide.yaml index 897c4a6..cbd3114 100644 --- a/glide.yaml +++ b/glide.yaml @@ -43,7 +43,7 @@ import: - package: github.com/jrick/logrotate subpackages: - rotator -- package: github.com/pebbe/zmq4 +- package: github.com/lightninglabs/gozmq testImport: - package: github.com/davecgh/go-spew subpackages: