commit 3b357b6a6de7ff02c99328ec2a91679ca71c1788
parent d6b2cdd595781fb6cb47a518e33a633dee3f3fa5
Author: ThomasV <electrumdev@gmail.com>
Date: Tue, 5 May 2015 13:44:42 +0200
Merge pull request #1192 from kyuupichan/if-cleanup3
Pass the response_queue to the constructor, not start().
Diffstat:
3 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/lib/interface.py b/lib/interface.py
@@ -31,13 +31,13 @@ from version import ELECTRUM_VERSION, PROTOCOL_VERSION
from simple_config import SimpleConfig
-def Interface(server, config = None):
+def Interface(server, response_queue, config = None):
"""Interface factory function. The returned interface class handles the connection
to a single remote electrum server. The object handles all necessary locking. It's
exposed API is:
- Inherits everything from threading.Thread.
- - Member functions start(), send_request(), stop(), is_connected()
+ - Member functions send_request(), stop(), is_connected()
- Member variable server.
"is_connected()" is currently racy. "server" is constant for the object's lifetime and hence
@@ -45,13 +45,13 @@ def Interface(server, config = None):
"""
host, port, protocol = server.split(':')
if protocol in 'st':
- return TcpInterface(server, config)
+ return TcpInterface(server, response_queue, config)
else:
raise Exception('Unknown protocol: %s'%protocol)
class TcpInterface(threading.Thread):
- def __init__(self, server, config = None):
+ def __init__(self, server, response_queue, config = None):
threading.Thread.__init__(self)
self.daemon = True
self.config = config if config is not None else SimpleConfig()
@@ -59,6 +59,7 @@ class TcpInterface(threading.Thread):
self.connected = False
self.debug = False # dump network messages. can be changed at runtime using the console
self.message_id = 0
+ self.response_queue = response_queue
self.unanswered_requests = {}
# are we waiting for a pong?
self.is_ping = False
@@ -275,10 +276,6 @@ class TcpInterface(threading.Thread):
self.connected = False
self.print_error("stopped")
- def start(self, response_queue):
- self.response_queue = response_queue
- threading.Thread.start(self)
-
def run(self):
self.s = self.get_socket()
if self.s:
diff --git a/lib/network.py b/lib/network.py
@@ -271,9 +271,9 @@ class Network(util.DaemonThread):
def start_interface(self, server):
if server in self.interfaces.keys():
return
- i = interface.Interface(server, self.config)
+ i = interface.Interface(server, self.queue, self.config)
self.pending_servers.add(server)
- i.start(self.queue)
+ i.start()
return i
def start_random_interface(self):
diff --git a/scripts/util.py b/scripts/util.py
@@ -25,10 +25,10 @@ def send_request(peers, request):
# start interfaces
q2 = Queue.Queue()
config = SimpleConfig()
- interfaces = map ( lambda server: Interface(server, config), peers )
+ interfaces = map( lambda server: Interface(server, q2, config), peers )
reached_servers = []
for i in interfaces:
- i.start(q2)
+ i.start()
t0 = time.time()
while peers:
try: