From 1a1e92f586384df362acde97496d4eddfaaeb48c Mon Sep 17 00:00:00 2001 From: Jonathan Zernik Date: Sat, 26 Dec 2020 01:33:24 -0800 Subject: [PATCH] Remove squeak server client class (#509) --- squeaknode/main.py | 9 --- squeaknode/network/peer_client.py | 71 ++++++++++++++++------ squeaknode/network/squeak_server_client.py | 70 --------------------- squeaknode/node/network_sync.py | 6 +- squeaknode/node/peer_connection.py | 3 +- squeaknode/node/squeak_controller.py | 3 - squeaknode/node/squeak_sync_status.py | 5 +- 7 files changed, 56 insertions(+), 111 deletions(-) delete mode 100644 squeaknode/network/squeak_server_client.py diff --git a/squeaknode/main.py b/squeaknode/main.py index 3b125e84..bc47b93a 100644 --- a/squeaknode/main.py +++ b/squeaknode/main.py @@ -20,7 +20,6 @@ from squeaknode.core.lightning_address import LightningAddressHostPort from squeaknode.server.squeak_server_handler import SqueakServerHandler from squeaknode.server.squeak_server_servicer import SqueakServerServicer from squeaknode.node.squeak_node import SqueakNode -from squeaknode.network.squeak_server_client import SqueakServerClient from squeaknode.config.config import Config @@ -125,10 +124,6 @@ def load_blockchain_client(config): ) -def load_squeak_server_client(config): - return SqueakServerClient() - - def sigterm_handler(_signo, _stack_frame): # Raises SystemExit(0): sys.exit(0) @@ -225,9 +220,6 @@ def run_server(config): # load the blockchain client blockchain_client = load_blockchain_client(config) - # load the squeak server client - squeak_server_client = load_squeak_server_client(config) - # load enable sync config sync_interval_s = load_sync_interval_s(config) @@ -235,7 +227,6 @@ def run_server(config): squeak_db, blockchain_client, lightning_client, - squeak_server_client, lightning_host_port, price_msat, max_squeaks_per_address_per_hour, diff --git a/squeaknode/network/peer_client.py b/squeaknode/network/peer_client.py index 41b05df8..2f92d5c9 100644 --- a/squeaknode/network/peer_client.py +++ b/squeaknode/network/peer_client.py @@ -1,46 +1,77 @@ import logging +from contextlib import contextmanager + +import grpc +from squeak.core import CheckSqueak, CSqueak + +from squeaknode.core.util import get_hash + +from proto import squeak_server_pb2, squeak_server_pb2_grpc logger = logging.getLogger(__name__) class PeerClient: - def __init__(self, host, port, squeak_server_client): + def __init__(self, host, port): self.host = host self.port = port - self.squeak_server_client = squeak_server_client + @contextmanager def get_stub(self): - return self.squeak_server_client.get_stub( - self.host, - self.port, - ) + host_port_str = "{}:{}".format(self.host, self.port) + with grpc.insecure_channel(host_port_str) as server_channel: + yield squeak_server_pb2_grpc.SqueakServerStub(server_channel) def lookup_squeaks(self, addresses, min_block, max_block): with self.get_stub() as stub: - return self.squeak_server_client.lookup_squeaks( - stub, - addresses, - min_block, - max_block, + lookup_response = stub.LookupSqueaks( + squeak_server_pb2.LookupSqueaksRequest( + addresses=addresses, + min_block=min_block, + max_block=max_block, + ) ) + return lookup_response def post_squeak(self, squeak): + squeak_msg = self._build_squeak_msg(squeak) with self.get_stub() as stub: - return self.squeak_server_client.post_squeak( - stub, - squeak, + stub.PostSqueak( + squeak_server_pb2.PostSqueakRequest( + squeak=squeak_msg, + ) ) def get_squeak(self, squeak_hash): with self.get_stub() as stub: - return self.squeak_server_client.get_squeak( - stub, - squeak_hash, + get_response = stub.GetSqueak( + squeak_server_pb2.GetSqueakRequest( + hash=squeak_hash, + ) ) + get_response_squeak = self._squeak_from_msg(get_response.squeak) + CheckSqueak(get_response_squeak, skipDecryptionCheck=True) + return get_response_squeak def buy_squeak(self, squeak_hash): with self.get_stub() as stub: - return self.squeak_server_client.buy_squeak( - stub, - squeak_hash, + buy_response = stub.GetOffer( + squeak_server_pb2.GetOfferRequest( + hash=squeak_hash, + ) ) + offer_msg = buy_response.offer + return offer_msg + + def _build_squeak_msg(self, squeak): + return squeak_server_pb2.Squeak( + hash=get_hash(squeak), + serialized_squeak=squeak.serialize(), + ) + + def _squeak_from_msg(self, squeak_msg): + if not squeak_msg: + return None + if not squeak_msg.serialized_squeak: + return None + return CSqueak.deserialize(squeak_msg.serialized_squeak) diff --git a/squeaknode/network/squeak_server_client.py b/squeaknode/network/squeak_server_client.py deleted file mode 100644 index de64b638..00000000 --- a/squeaknode/network/squeak_server_client.py +++ /dev/null @@ -1,70 +0,0 @@ -import logging -from contextlib import contextmanager - -import grpc -from squeak.core import CheckSqueak, CSqueak - -from squeaknode.core.util import get_hash - -from proto import squeak_server_pb2, squeak_server_pb2_grpc - -logger = logging.getLogger(__name__) - - -class SqueakServerClient: - - @contextmanager - def get_stub(self, host, port): - host_port_str = "{}:{}".format(host, port) - with grpc.insecure_channel(host_port_str) as server_channel: - yield squeak_server_pb2_grpc.SqueakServerStub(server_channel) - - def lookup_squeaks(self, stub, addresses, min_block, max_block): - lookup_response = stub.LookupSqueaks( - squeak_server_pb2.LookupSqueaksRequest( - addresses=addresses, - min_block=min_block, - max_block=max_block, - ) - ) - return lookup_response - - def post_squeak(self, stub, squeak): - squeak_msg = self._build_squeak_msg(squeak) - stub.PostSqueak( - squeak_server_pb2.PostSqueakRequest( - squeak=squeak_msg, - ) - ) - - def get_squeak(self, stub, squeak_hash): - get_response = stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest( - hash=squeak_hash, - ) - ) - get_response_squeak = self._squeak_from_msg(get_response.squeak) - CheckSqueak(get_response_squeak, skipDecryptionCheck=True) - return get_response_squeak - - def buy_squeak(self, stub, squeak_hash): - buy_response = stub.GetOffer( - squeak_server_pb2.GetOfferRequest( - hash=squeak_hash, - ) - ) - offer_msg = buy_response.offer - return offer_msg - - def _build_squeak_msg(self, squeak): - return squeak_server_pb2.Squeak( - hash=get_hash(squeak), - serialized_squeak=squeak.serialize(), - ) - - def _squeak_from_msg(self, squeak_msg): - if not squeak_msg: - return None - if not squeak_msg.serialized_squeak: - return None - return CSqueak.deserialize(squeak_msg.serialized_squeak) diff --git a/squeaknode/node/network_sync.py b/squeaknode/node/network_sync.py index 18508909..c7a932bc 100644 --- a/squeaknode/node/network_sync.py +++ b/squeaknode/node/network_sync.py @@ -21,17 +21,15 @@ class NetworkSync: squeak_store, squeak_db, lightning_client, - squeak_server_client, ): self.squeak_store = squeak_store self.squeak_db = squeak_db self.lightning_client = lightning_client - self.squeak_server_client = squeak_server_client def sync_timeline(self, peer, min_block, max_block): if not peer.downloading: return - peer_connection = PeerConnection(peer, self.squeak_server_client) + peer_connection = PeerConnection(peer) peer_sync_task = PeerSyncTask( peer_connection, self.squeak_store, @@ -46,7 +44,7 @@ class NetworkSync: def sync_single_squeak(self, peer, squeak_hash): if not peer.downloading: return - peer_connection = PeerConnection(peer, self.squeak_server_client) + peer_connection = PeerConnection(peer) peer_sync_task = PeerSyncTask( peer_connection, self.squeak_store, diff --git a/squeaknode/node/peer_connection.py b/squeaknode/node/peer_connection.py index 3e0e6d3d..e0954772 100644 --- a/squeaknode/node/peer_connection.py +++ b/squeaknode/node/peer_connection.py @@ -7,12 +7,11 @@ logger = logging.getLogger(__name__) class PeerConnection: - def __init__(self, peer, squeak_server_client): + def __init__(self, peer): self.peer = peer self.peer_client = PeerClient( self.peer.host, self.peer.port, - squeak_server_client, ) self._stop_event = threading.Event() diff --git a/squeaknode/node/squeak_controller.py b/squeaknode/node/squeak_controller.py index fdfdb09c..77f8cf14 100644 --- a/squeaknode/node/squeak_controller.py +++ b/squeaknode/node/squeak_controller.py @@ -35,7 +35,6 @@ class SqueakController: squeak_db, blockchain_client, lightning_client, - squeak_server_client, lightning_host_port, price_msat, max_squeaks_per_address_per_hour, @@ -43,7 +42,6 @@ class SqueakController: self.squeak_db = squeak_db self.blockchain_client = blockchain_client self.lightning_client = lightning_client - self.squeak_server_client = squeak_server_client self.lightning_host_port = lightning_host_port self.price_msat = price_msat self.squeak_block_verifier = SqueakBlockVerifier(blockchain_client) @@ -64,7 +62,6 @@ class SqueakController: ) self.squeak_sync_controller = SqueakSyncController( self.blockchain_client, - self.squeak_server_client, self.squeak_store, self.squeak_db, self.lightning_client, diff --git a/squeaknode/node/squeak_sync_status.py b/squeaknode/node/squeak_sync_status.py index b9a3bb82..b03c75a1 100644 --- a/squeaknode/node/squeak_sync_status.py +++ b/squeaknode/node/squeak_sync_status.py @@ -14,13 +14,12 @@ LOOKUP_BLOCK_INTERVAL = 1008 # 1 week class SqueakSyncController: - def __init__(self, blockchain_client, squeak_server_client, squeak_store, squeak_db, lightning_client): + def __init__(self, blockchain_client, squeak_store, squeak_db, lightning_client): self.blockchain_client = blockchain_client - self.squeak_server_client = squeak_server_client self.squeak_store = squeak_store self.squeak_db = squeak_db self.lightning_client = lightning_client - self.network_sync = NetworkSync(squeak_store, squeak_db, lightning_client, squeak_server_client) + self.network_sync = NetworkSync(squeak_store, squeak_db, lightning_client) def sync_timeline(self): try: