Browse Source

Have network_proxy use ThreadJob framework

Rename WalletSynchronizer to Synchronizer so that diagnostic messages,
which are based on class name, still refer to Synchronizer.
283
Neil Booth 9 years ago
parent
commit
01491dd1d0
  1. 2
      lib/__init__.py
  2. 4
      lib/network_proxy.py
  3. 12
      lib/synchronizer.py
  4. 8
      lib/wallet.py

2
lib/__init__.py

@ -1,6 +1,6 @@
from version import ELECTRUM_VERSION
from util import format_satoshis, print_msg, print_json, print_error, set_verbosity
from wallet import WalletSynchronizer, WalletStorage
from wallet import Synchronizer, WalletStorage
from wallet import Wallet, Imported_Wallet
from network import Network, DEFAULT_SERVERS, DEFAULT_PORTS, pick_random_server
from interface import Interface

4
lib/network_proxy.py

@ -60,15 +60,13 @@ class NetworkProxy(util.DaemonThread):
self.blockchain_height = 0
self.server_height = 0
self.interfaces = []
self.jobs = []
# value returned by estimatefee
self.fee = None
def run(self):
while self.is_running():
for job in self.jobs:
job()
self.run_jobs() # Synchronizer, for now
try:
response = self.pipe.get()
except util.timeout:

12
lib/synchronizer.py

@ -21,10 +21,10 @@ from threading import Lock
from bitcoin import Hash, hash_encode
from transaction import Transaction
from util import print_error, print_msg
from util import print_error, print_msg, ThreadJob
class WalletSynchronizer():
class Synchronizer(ThreadJob):
'''The synchronizer keeps the wallet up-to-date with its set of
addresses and their transactions. It subscribes over the network
to wallet addresses, gets the wallet to generate new addresses
@ -46,12 +46,6 @@ class WalletSynchronizer():
self.lock = Lock()
self.initialize()
def print_error(self, *msg):
print_error("[Synchronizer]", *msg)
def print_msg(self, *msg):
print_msg("[Synchronizer]", *msg)
def parse_response(self, response):
if response.get('error'):
self.print_error("response error:", response)
@ -165,7 +159,7 @@ class WalletSynchronizer():
self.print_error("missing tx", self.requested_tx)
self.subscribe_to_addresses(set(self.wallet.addresses(True)))
def main_loop(self):
def run(self):
'''Called from the network proxy thread main loop.'''
# 1. Create new addresses
self.wallet.synchronize()

8
lib/wallet.py

@ -38,7 +38,7 @@ from version import *
from transaction import Transaction
from plugins import run_hook
import bitcoin
from synchronizer import WalletSynchronizer
from synchronizer import Synchronizer
from mnemonic import Mnemonic
import paymentrequest
@ -1110,8 +1110,8 @@ class Abstract_Wallet(object):
self.verifier = SPV(self.network, self)
self.verifier.start()
self.set_verifier(self.verifier)
self.synchronizer = WalletSynchronizer(self, network)
network.jobs.append(self.synchronizer.main_loop)
self.synchronizer = Synchronizer(self, network)
network.add_job(self.synchronizer)
else:
self.verifier = None
self.synchronizer = None
@ -1119,7 +1119,7 @@ class Abstract_Wallet(object):
def stop_threads(self):
if self.network:
self.verifier.stop()
self.network.jobs.remove(self.synchronizer.main_loop)
self.network.remove_job(self.synchronizer)
self.synchronizer = None
self.storage.put('stored_height', self.get_local_height(), True)

Loading…
Cancel
Save