interface: do not connect inside the constructor
This commit is contained in:
parent
4fbd2ea66e
commit
82531131ee
6
electrum
6
electrum
@ -184,15 +184,17 @@ if __name__ == '__main__':
|
|||||||
else:
|
else:
|
||||||
sys.exit("Error: Unknown GUI: " + pref_gui )
|
sys.exit("Error: Unknown GUI: " + pref_gui )
|
||||||
|
|
||||||
gui = gui.ElectrumGui(wallet, config)
|
|
||||||
interface = Interface(config, True)
|
interface = Interface(config, True)
|
||||||
interface.register_callback('peers', gui.server_list_changed)
|
|
||||||
interface.start()
|
interface.start()
|
||||||
wallet.interface = interface
|
wallet.interface = interface
|
||||||
|
|
||||||
|
gui = gui.ElectrumGui(wallet, config)
|
||||||
|
interface.register_callback('peers', gui.server_list_changed)
|
||||||
|
# need to wait until interface is connected..
|
||||||
WalletSynchronizer(wallet, config).start()
|
WalletSynchronizer(wallet, config).start()
|
||||||
WalletVerifier(wallet, config).start()
|
WalletVerifier(wallet, config).start()
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
found = config.wallet_file_exists
|
found = config.wallet_file_exists
|
||||||
if not found:
|
if not found:
|
||||||
|
|||||||
@ -208,6 +208,8 @@ class ElectrumWindow(QMainWindow):
|
|||||||
self.wallet = wallet
|
self.wallet = wallet
|
||||||
self.config = config
|
self.config = config
|
||||||
self.wallet.interface.register_callback('updated', self.update_callback)
|
self.wallet.interface.register_callback('updated', self.update_callback)
|
||||||
|
self.wallet.interface.register_callback('connected', self.update_callback)
|
||||||
|
self.wallet.interface.register_callback('disconnected', self.update_callback)
|
||||||
|
|
||||||
self.detailed_view = config.get('qt_detailed_view', False)
|
self.detailed_view = config.get('qt_detailed_view', False)
|
||||||
|
|
||||||
|
|||||||
@ -266,7 +266,6 @@ class Interface(threading.Thread):
|
|||||||
self.bytes_received += len(msg)
|
self.bytes_received += len(msg)
|
||||||
if msg == '':
|
if msg == '':
|
||||||
self.is_connected = False
|
self.is_connected = False
|
||||||
print "Disconnected."
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
s = out.find('\n')
|
s = out.find('\n')
|
||||||
@ -312,6 +311,7 @@ class Interface(threading.Thread):
|
|||||||
self.daemon = True
|
self.daemon = True
|
||||||
self.loop = loop
|
self.loop = loop
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.connect_event = threading.Event()
|
||||||
|
|
||||||
self.subscriptions = {}
|
self.subscriptions = {}
|
||||||
self.responses = {}
|
self.responses = {}
|
||||||
@ -319,7 +319,6 @@ class Interface(threading.Thread):
|
|||||||
|
|
||||||
self.callbacks = {}
|
self.callbacks = {}
|
||||||
self.lock = threading.Lock()
|
self.lock = threading.Lock()
|
||||||
self.init_interface()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -339,6 +338,7 @@ class Interface(threading.Thread):
|
|||||||
if not servers:
|
if not servers:
|
||||||
raise BaseException('no server available')
|
raise BaseException('no server available')
|
||||||
|
|
||||||
|
self.connect_event.set()
|
||||||
if self.is_connected:
|
if self.is_connected:
|
||||||
self.send([('server.version', [ELECTRUM_VERSION])])
|
self.send([('server.version', [ELECTRUM_VERSION])])
|
||||||
self.trigger_callback('connected')
|
self.trigger_callback('connected')
|
||||||
@ -469,16 +469,21 @@ class Interface(threading.Thread):
|
|||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
threading.Thread.start(self)
|
||||||
|
# wait until connection is established
|
||||||
|
self.connect_event.wait()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while True:
|
while True:
|
||||||
|
self.init_interface()
|
||||||
|
self.resend_subscriptions()
|
||||||
|
|
||||||
self.run_tcp() if self.protocol in 'st' else self.run_http()
|
self.run_tcp() if self.protocol in 'st' else self.run_http()
|
||||||
self.trigger_callback('disconnected')
|
self.trigger_callback('disconnected')
|
||||||
if not self.loop: break
|
if not self.loop: break
|
||||||
|
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
self.init_interface()
|
|
||||||
self.resend_subscriptions()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,10 +5,10 @@ import time, Queue
|
|||||||
|
|
||||||
servers = DEFAULT_SERVERS
|
servers = DEFAULT_SERVERS
|
||||||
interfaces = map ( lambda server: Interface({'server':server} ), servers )
|
interfaces = map ( lambda server: Interface({'server':server} ), servers )
|
||||||
|
for i in interfaces: i.start()
|
||||||
|
|
||||||
for i in interfaces:
|
for i in interfaces:
|
||||||
if i.is_connected:
|
if i.is_connected:
|
||||||
i.start()
|
|
||||||
i.send([('blockchain.numblocks.subscribe',[])])
|
i.send([('blockchain.numblocks.subscribe',[])])
|
||||||
i.status = "timed out"
|
i.status = "timed out"
|
||||||
else:
|
else:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user