Remove squeak server client class (#509)

This commit is contained in:
Jonathan Zernik 2020-12-26 01:33:24 -08:00 committed by GitHub
parent 0a5a54554c
commit 1a1e92f586
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 56 additions and 111 deletions

View file

@ -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,

View file

@ -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)

View file

@ -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)

View file

@ -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,

View file

@ -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()

View file

@ -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,

View file

@ -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: