commit 2d336652b6b4fa2c55e32d5afca2b9b4f55fc5fa
parent bae345a9b95dff3ae89ec354a12b6bab8182c7d6
Author: parazyd <parazyd@dyne.org>
Date: Wed, 7 Apr 2021 17:00:39 +0200
Connect ElectrumProtocol with ZeroMQ Client.
Diffstat:
2 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/electrumobelisk/protocol.py b/electrumobelisk/protocol.py
@@ -17,6 +17,8 @@
import asyncio
import json
+from zeromq import Client
+
VERSION = 0.0
DONATION_ADDR = "bc1q7an9p5pz6pjwjk4r48zke2yfaevafzpglg26mz"
@@ -38,6 +40,9 @@ class ElectrumProtocol(asyncio.Protocol):
self.log = log
self.endpoints = endpoints
self.server_cfg = server_cfg
+ self.loop = asyncio.get_event_loop()
+ # Consider renaming bx to something else
+ self.bx = Client(log, endpoints, self.loop)
if chain == "mainnet":
self.genesis = "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
diff --git a/electrumobelisk/zeromq.py b/electrumobelisk/zeromq.py
@@ -172,16 +172,10 @@ class RequestCollection:
class Client:
- """This class represents a connection to a libbitcoin server.
- hostname -- the server DNS name to connect to
- ports -- a dictionary containing four keys; query/heartbeat/block/tx
- """
-
- # def __init__(self, hostname, ports, settings=ClientSettings()):
- def __init__(self, hostname, ports, loop):
- self._hostname = hostname
- self._ports = ports
- # self._settings = settings
+ """This class represents a connection to a libbitcoin server."""
+ def __init__(self, log, endpoints, loop):
+ self.log = log
+ self._endpoints = endpoints
self._settings = ClientSettings(loop=loop)
self._query_socket = self._create_query_socket()
self._block_socket = self._create_block_socket()
@@ -198,7 +192,7 @@ class Client:
zmq.SUB, # pylint: disable=E1101
io_loop=self._settings._loop, # pylint: disable=W0212
)
- socket.connect(self.__server_url(self._hostname, self._ports["block"]))
+ socket.connect(self._endpoints["block"])
socket.setsockopt_string(zmq.SUBSCRIBE, "") # pylint: disable=E1101
return socket
@@ -207,7 +201,7 @@ class Client:
zmq.DEALER, # pylint: disable=E1101
io_loop=self._settings._loop, # pylint: disable=W0212
)
- socket.connect(self.__server_url(self._hostname, self._ports["query"]))
+ socket.connect(self._endpoints["query"])
return socket
async def _subscription_request(self, command, data):
@@ -240,7 +234,3 @@ class Client:
assert response.command == request.command
assert response.request_id == request.id_
return response.error_code, response.data
-
- @staticmethod
- def __server_url(hostname, port):
- return "tcp://" + hostname + ":" + str(port)