mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-16 13:01:04 +02:00
Improve node init (#1940)
* Eliminate squeak params from controller and network manager * Separate instantiation from initialization of objects in node class
This commit is contained in:
parent
9882ef59a3
commit
ac3279c532
4 changed files with 76 additions and 69 deletions
|
|
@ -25,7 +25,6 @@ from typing import Iterable
|
|||
from typing import List
|
||||
from typing import Optional
|
||||
|
||||
import squeak.params
|
||||
from squeak.messages import MsgSerializable
|
||||
from squeak.net import CSqueakLocator
|
||||
|
||||
|
|
@ -50,11 +49,11 @@ class NetworkManager(object):
|
|||
"""Interface for doing things involving the network.
|
||||
"""
|
||||
|
||||
def __init__(self, config):
|
||||
def __init__(self, config, default_port):
|
||||
self.config = config
|
||||
self.external_host = self.config.server.external_address
|
||||
self.local_ip = socket.gethostbyname('localhost')
|
||||
self.local_port = self.config.server.port or squeak.params.params.DEFAULT_PORT
|
||||
self.local_port = self.config.server.port or default_port
|
||||
self.peer_server = None
|
||||
self.peer_client = None
|
||||
self.tor_proxy_ip = self.config.tor.proxy_ip
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ from typing import Iterable
|
|||
from typing import List
|
||||
from typing import Optional
|
||||
|
||||
import squeak.params
|
||||
from squeak.core import CSqueak
|
||||
from squeak.core.keys import SqueakPrivateKey
|
||||
from squeak.core.keys import SqueakPublicKey
|
||||
|
|
@ -70,6 +69,7 @@ class SqueakController:
|
|||
tweet_forwarder,
|
||||
node_settings,
|
||||
config,
|
||||
default_port,
|
||||
):
|
||||
self.squeak_store = squeak_store
|
||||
self.squeak_core = squeak_core
|
||||
|
|
@ -79,6 +79,7 @@ class SqueakController:
|
|||
self.tweet_forwarder = tweet_forwarder
|
||||
self.node_settings = node_settings
|
||||
self.config = config
|
||||
self.default_port = default_port
|
||||
|
||||
def make_squeak(
|
||||
self,
|
||||
|
|
@ -522,7 +523,7 @@ class SqueakController:
|
|||
return self.network_manager.external_address
|
||||
|
||||
def get_default_peer_port(self) -> int:
|
||||
return squeak.params.params.DEFAULT_PORT
|
||||
return self.default_port
|
||||
|
||||
def set_sell_price_msat(self, sell_price_msat: int) -> None:
|
||||
self.node_settings.set_sell_price_msat(sell_price_msat)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
# SOFTWARE.
|
||||
import logging
|
||||
|
||||
import squeak.params
|
||||
from squeak.params import SelectParams
|
||||
|
||||
from squeaknode.admin.squeak_admin_server_handler import SqueakAdminServerHandler
|
||||
|
|
@ -59,37 +60,36 @@ class SqueakNode:
|
|||
|
||||
def __init__(self, config: SqueaknodeConfig):
|
||||
self.config = config
|
||||
|
||||
def _initialize(self):
|
||||
self.initialize_network()
|
||||
self.initialize_db()
|
||||
self.initialize_node_settings()
|
||||
self.initialize_lightning_client()
|
||||
self.initialize_bitcoin_client()
|
||||
self.initialize_bitcoin_block_subscription_client()
|
||||
self.initialize_squeak_core()
|
||||
self.initialize_squeak_store()
|
||||
self.initialize_payment_processor()
|
||||
self.initialize_twitter_forwarder()
|
||||
self.initialize_network_manager()
|
||||
self.initialize_download_manager()
|
||||
self.initialize_squeak_controller()
|
||||
self.initialize_network_handler()
|
||||
self.initialize_admin_handler()
|
||||
self.initialize_admin_rpc_server()
|
||||
self.initialize_admin_web_server()
|
||||
self.initialize_received_payment_processor_worker()
|
||||
self.initialize_forward_tweets_processor_worker()
|
||||
self.initialize_peer_connection_worker()
|
||||
self.initialize_squeak_deletion_worker()
|
||||
self.initialize_offer_expiry_worker()
|
||||
self.initialize_new_squeak_worker()
|
||||
self.initialize_new_secret_key_worker()
|
||||
self.initialize_new_follow_worker()
|
||||
self.initialize_peer_subscription_update_worker()
|
||||
self.set_network_params()
|
||||
self.create_db()
|
||||
self.create_node_settings()
|
||||
self.create_lightning_client()
|
||||
self.create_bitcoin_client()
|
||||
self.create_bitcoin_block_subscription_client()
|
||||
self.create_squeak_core()
|
||||
self.create_squeak_store()
|
||||
self.create_payment_processor()
|
||||
self.create_twitter_forwarder()
|
||||
self.create_network_manager()
|
||||
self.create_download_manager()
|
||||
self.create_squeak_controller()
|
||||
self.create_network_handler()
|
||||
self.create_admin_handler()
|
||||
self.create_admin_rpc_server()
|
||||
self.create_admin_web_server()
|
||||
self.create_received_payment_processor_worker()
|
||||
self.create_forward_tweets_processor_worker()
|
||||
self.create_peer_connection_worker()
|
||||
self.create_squeak_deletion_worker()
|
||||
self.create_offer_expiry_worker()
|
||||
self.create_new_squeak_worker()
|
||||
self.create_new_secret_key_worker()
|
||||
self.create_new_follow_worker()
|
||||
self.create_peer_subscription_update_worker()
|
||||
|
||||
def start_running(self):
|
||||
self._initialize()
|
||||
self.squeak_db.init_with_retries()
|
||||
self.lightning_client.init()
|
||||
|
||||
self.network_manager.start(self.network_handler)
|
||||
if self.config.rpc.enabled:
|
||||
|
|
@ -116,37 +116,31 @@ class SqueakNode:
|
|||
self.forward_tweets_processor_worker.stop_running()
|
||||
self.new_squeak_worker.stop_running()
|
||||
|
||||
def initialize_network(self):
|
||||
# load the network
|
||||
self.network = self.config.node.network
|
||||
SelectParams(self.network)
|
||||
def set_network_params(self):
|
||||
SelectParams(self.config.node.network)
|
||||
|
||||
def initialize_db(self):
|
||||
def create_db(self):
|
||||
connection_string = get_connection_string(
|
||||
self.config,
|
||||
self.network,
|
||||
self.config.node.network,
|
||||
)
|
||||
logger.info("Using connection string: {}".format(
|
||||
connection_string))
|
||||
engine = get_engine(connection_string)
|
||||
self.squeak_db = SqueakDb(engine)
|
||||
self.squeak_db.init_with_retries()
|
||||
|
||||
def initialize_node_settings(self):
|
||||
def create_node_settings(self):
|
||||
self.node_settings = NodeSettings(self.squeak_db)
|
||||
|
||||
def initialize_lightning_client(self):
|
||||
# load the lightning client
|
||||
def create_lightning_client(self):
|
||||
self.lightning_client = LNDLightningClient(
|
||||
self.config.lnd.host,
|
||||
self.config.lnd.rpc_port,
|
||||
self.config.lnd.tls_cert_path,
|
||||
self.config.lnd.macaroon_path,
|
||||
)
|
||||
self.lightning_client.init()
|
||||
|
||||
def initialize_bitcoin_client(self):
|
||||
# load the bitcoin client
|
||||
def create_bitcoin_client(self):
|
||||
self.bitcoin_client = BitcoinCoreClient(
|
||||
self.config.bitcoin.rpc_host,
|
||||
self.config.bitcoin.rpc_port,
|
||||
|
|
@ -156,19 +150,19 @@ class SqueakNode:
|
|||
self.config.bitcoin.rpc_ssl_cert,
|
||||
)
|
||||
|
||||
def initialize_bitcoin_block_subscription_client(self):
|
||||
def create_bitcoin_block_subscription_client(self):
|
||||
self.bitcoin_block_subscription_client = BitcoinBlockSubscriptionClient(
|
||||
self.config.bitcoin.rpc_host,
|
||||
self.config.bitcoin.zeromq_hashblock_port,
|
||||
)
|
||||
|
||||
def initialize_squeak_core(self):
|
||||
def create_squeak_core(self):
|
||||
self.squeak_core = SqueakCore(
|
||||
self.bitcoin_client,
|
||||
self.lightning_client,
|
||||
)
|
||||
|
||||
def initialize_squeak_store(self):
|
||||
def create_squeak_store(self):
|
||||
self.squeak_store = SqueakStore(
|
||||
self.squeak_db,
|
||||
self.squeak_core,
|
||||
|
|
@ -179,24 +173,27 @@ class SqueakNode:
|
|||
self.config.node.sent_offer_retention_s,
|
||||
)
|
||||
|
||||
def initialize_payment_processor(self):
|
||||
def create_payment_processor(self):
|
||||
self.payment_processor = PaymentProcessor(
|
||||
self.squeak_db,
|
||||
self.squeak_core,
|
||||
self.config.node.subscribe_invoices_retry_s,
|
||||
)
|
||||
|
||||
def initialize_twitter_forwarder(self):
|
||||
def create_twitter_forwarder(self):
|
||||
self.twitter_forwarder = TwitterForwarder(
|
||||
self.squeak_store,
|
||||
self.squeak_core,
|
||||
self.config.twitter.forward_tweets_retry_s,
|
||||
)
|
||||
|
||||
def initialize_network_manager(self):
|
||||
self.network_manager = NetworkManager(self.config)
|
||||
def create_network_manager(self):
|
||||
self.network_manager = NetworkManager(
|
||||
self.config,
|
||||
squeak.params.params.DEFAULT_PORT,
|
||||
)
|
||||
|
||||
def initialize_squeak_controller(self):
|
||||
def create_squeak_controller(self):
|
||||
self.squeak_controller = SqueakController(
|
||||
self.squeak_store,
|
||||
self.squeak_core,
|
||||
|
|
@ -206,9 +203,10 @@ class SqueakNode:
|
|||
self.twitter_forwarder,
|
||||
self.node_settings,
|
||||
self.config,
|
||||
squeak.params.params.DEFAULT_PORT,
|
||||
)
|
||||
|
||||
def initialize_network_handler(self):
|
||||
def create_network_handler(self):
|
||||
self.network_handler = NetworkHandler(
|
||||
self.squeak_store,
|
||||
self.squeak_core,
|
||||
|
|
@ -218,20 +216,20 @@ class SqueakNode:
|
|||
self.config,
|
||||
)
|
||||
|
||||
def initialize_admin_handler(self):
|
||||
def create_admin_handler(self):
|
||||
self.admin_handler = SqueakAdminServerHandler(
|
||||
self.lightning_client,
|
||||
self.squeak_controller,
|
||||
)
|
||||
|
||||
def initialize_admin_rpc_server(self):
|
||||
def create_admin_rpc_server(self):
|
||||
self.admin_rpc_server = SqueakAdminServerServicer(
|
||||
self.config.rpc.host,
|
||||
self.config.rpc.port,
|
||||
self.admin_handler,
|
||||
)
|
||||
|
||||
def initialize_admin_web_server(self):
|
||||
def create_admin_web_server(self):
|
||||
self.admin_web_server = SqueakAdminWebServer(
|
||||
self.config.webadmin.host,
|
||||
self.config.webadmin.port,
|
||||
|
|
@ -243,62 +241,62 @@ class SqueakNode:
|
|||
self.admin_handler,
|
||||
)
|
||||
|
||||
def initialize_received_payment_processor_worker(self):
|
||||
def create_received_payment_processor_worker(self):
|
||||
self.received_payment_processor_worker = ProcessReceivedPaymentsWorker(
|
||||
self.payment_processor,
|
||||
)
|
||||
|
||||
def initialize_forward_tweets_processor_worker(self):
|
||||
def create_forward_tweets_processor_worker(self):
|
||||
self.forward_tweets_processor_worker = ProcessForwardTweetsWorker(
|
||||
self.twitter_forwarder,
|
||||
)
|
||||
|
||||
def initialize_peer_connection_worker(self):
|
||||
def create_peer_connection_worker(self):
|
||||
self.peer_connection_worker = PeerConnectionWorker(
|
||||
self.squeak_store,
|
||||
self.network_manager,
|
||||
self.config.node.peer_autoconnect_interval_s,
|
||||
)
|
||||
|
||||
def initialize_squeak_deletion_worker(self):
|
||||
def create_squeak_deletion_worker(self):
|
||||
self.squeak_deletion_worker = SqueakDeletionWorker(
|
||||
self.squeak_store,
|
||||
self.config.node.squeak_deletion_interval_s,
|
||||
)
|
||||
|
||||
def initialize_offer_expiry_worker(self):
|
||||
def create_offer_expiry_worker(self):
|
||||
self.offer_expiry_worker = SqueakOfferExpiryWorker(
|
||||
self.squeak_store,
|
||||
self.config.node.offer_deletion_interval_s,
|
||||
)
|
||||
|
||||
def initialize_new_squeak_worker(self):
|
||||
def create_new_squeak_worker(self):
|
||||
self.new_squeak_worker = UpdateSubscribedSqueaksWorker(
|
||||
self.squeak_store,
|
||||
self.network_manager,
|
||||
)
|
||||
|
||||
def initialize_new_secret_key_worker(self):
|
||||
def create_new_secret_key_worker(self):
|
||||
self.new_secret_key_worker = UpdateSubscribedSecretKeysWorker(
|
||||
self.squeak_store,
|
||||
self.network_manager,
|
||||
)
|
||||
|
||||
def initialize_new_follow_worker(self):
|
||||
def create_new_follow_worker(self):
|
||||
self.new_follow_worker = UpdateFollowsWorker(
|
||||
self.squeak_store,
|
||||
self.network_manager,
|
||||
self.network_handler,
|
||||
)
|
||||
|
||||
def initialize_peer_subscription_update_worker(self):
|
||||
def create_peer_subscription_update_worker(self):
|
||||
self.new_bitcoin_block_worker = PeerSubscriptionUpdateWorker(
|
||||
self.network_manager,
|
||||
self.network_handler,
|
||||
self.bitcoin_block_subscription_client,
|
||||
)
|
||||
|
||||
def initialize_download_manager(self):
|
||||
def create_download_manager(self):
|
||||
self.download_manager = ActiveDownloadManager(
|
||||
self.network_manager,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -100,6 +100,11 @@ def price_msat():
|
|||
return 777
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def default_peer_port():
|
||||
return 8765
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def payment_processor():
|
||||
return mock.Mock(spec=PaymentProcessor)
|
||||
|
|
@ -125,6 +130,7 @@ def squeak_controller(
|
|||
twitter_forwarder,
|
||||
node_settings,
|
||||
config,
|
||||
default_peer_port,
|
||||
):
|
||||
return SqueakController(
|
||||
squeak_store,
|
||||
|
|
@ -135,6 +141,7 @@ def squeak_controller(
|
|||
twitter_forwarder,
|
||||
node_settings,
|
||||
config,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -148,6 +155,7 @@ def regtest_squeak_controller(
|
|||
twitter_forwarder,
|
||||
node_settings,
|
||||
regtest_config,
|
||||
default_peer_port,
|
||||
):
|
||||
return SqueakController(
|
||||
squeak_store,
|
||||
|
|
@ -158,6 +166,7 @@ def regtest_squeak_controller(
|
|||
twitter_forwarder,
|
||||
node_settings,
|
||||
regtest_config,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue