tMerge pull request #1191 from kyuupichan/if-cleanup2 - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit d6b2cdd595781fb6cb47a518e33a633dee3f3fa5 DIR parent 5e2e82d5166df32e314818da852c0a721554bde4 HTML Author: ThomasV <electrumdev@gmail.com> Date: Tue, 5 May 2015 13:33:35 +0200 Merge pull request #1191 from kyuupichan/if-cleanup2 Make is_connected into a member function. No change in logic. Diffstat: M lib/interface.py | 33 +++++++++++++++---------------- M lib/network.py | 14 +++++++------- M scripts/util.py | 4 ++-- 3 files changed, 25 insertions(+), 26 deletions(-) --- DIR diff --git a/lib/interface.py b/lib/interface.py t@@ -37,10 +37,10 @@ def Interface(server, config = None): exposed API is: - Inherits everything from threading.Thread. - - Member functions start(), send_request(), stop() - - Member variables is_connected, server. + - Member functions start(), send_request(), stop(), is_connected() + - Member variable server. - "is_connected" is currently racy. "server" is constant for the object's lifetime and hence + "is_connected()" is currently racy. "server" is constant for the object's lifetime and hence synchronization is unnecessary. """ host, port, protocol = server.split(':') t@@ -56,7 +56,7 @@ class TcpInterface(threading.Thread): self.daemon = True self.config = config if config is not None else SimpleConfig() self.lock = threading.Lock() - self.is_connected = False + self.connected = False self.debug = False # dump network messages. can be changed at runtime using the console self.message_id = 0 self.unanswered_requests = {} t@@ -260,16 +260,19 @@ class TcpInterface(threading.Thread): self.print_error("-->", r) except socket.error, e: self.print_error("socked error:", e) - self.is_connected = False + self.connected = False return self.unanswered_requests[self.message_id] = method, params, _id, queue self.message_id += 1 + def is_connected(self): + return self.connected + def stop(self): - if self.is_connected and self.protocol in 'st' and self.s: + if self.connected and self.protocol in 'st' and self.s: self.s.shutdown(socket.SHUT_RDWR) self.s.close() - self.is_connected = False + self.connected = False self.print_error("stopped") def start(self, response_queue): t@@ -281,23 +284,23 @@ class TcpInterface(threading.Thread): if self.s: self.pipe = util.SocketPipe(self.s) self.s.settimeout(2) - self.is_connected = True + self.connected = True self.print_error("connected") self.change_status() - if not self.is_connected: + if not self.connected: return # ping timer ping_time = 0 # request timer request_time = False - while self.is_connected: + while self.connected: # ping the server with server.version if time.time() - ping_time > 60: if self.is_ping: self.print_error("ping timeout") - self.is_connected = False + self.connected = False break else: self.send_request({'method':'server.version', 'params':[ELECTRUM_VERSION, PROTOCOL_VERSION]}) t@@ -313,11 +316,11 @@ class TcpInterface(threading.Thread): else: if time.time() - request_time > 10: self.print_error("request timeout", len(self.unanswered_requests)) - self.is_connected = False + self.connected = False break continue if response is None: - self.is_connected = False + self.connected = False break if request_time is not False: self.print_error("stopping timer") t@@ -326,16 +329,12 @@ class TcpInterface(threading.Thread): self.change_status() - def change_status(self): - # print_error( "change status", self.server, self.is_connected) self.response_queue.put((self, None)) - - def check_cert(host, cert): try: x = x509.X509() DIR diff --git a/lib/network.py b/lib/network.py t@@ -206,7 +206,7 @@ class Network(util.DaemonThread): self.notify('status') def is_connected(self): - return self.interface and self.interface.is_connected + return self.interface and self.interface.is_connected() def send_subscriptions(self): for addr in self.addresses: t@@ -322,7 +322,7 @@ class Network(util.DaemonThread): return if auto_connect: - if not self.interface.is_connected: + if not self.interface.is_connected(): self.switch_to_random_interface() else: if self.server_is_lagging(): t@@ -335,7 +335,7 @@ class Network(util.DaemonThread): def switch_to_random_interface(self): while self.interfaces: i = random.choice(self.interfaces.values()) - if i.is_connected: + if i.is_connected(): self.switch_to_interface(i) break else: t@@ -356,14 +356,14 @@ class Network(util.DaemonThread): def set_server(self, server): - if self.default_server == server and self.interface.is_connected: + if self.default_server == server and self.interface.is_connected(): return if self.protocol != deserialize_server(server)[2]: return # stop the interface in order to terminate subscriptions - if self.interface.is_connected: + if self.interface.is_connected(): self.stop_interface() # notify gui t@@ -474,7 +474,7 @@ class Network(util.DaemonThread): self.print_error('network: retrying connections') self.disconnected_servers = set([]) nodes_retry_time = now - if not self.interface.is_connected: + if not self.interface.is_connected(): if self.config.get('auto_cycle'): if self.interfaces: self.switch_to_random_interface() t@@ -500,7 +500,7 @@ class Network(util.DaemonThread): if i.server in self.pending_servers: self.pending_servers.remove(i.server) - if i.is_connected: + if i.is_connected(): self.add_interface(i) self.add_recent_server(i) i.send_request({'method':'blockchain.headers.subscribe','params':[]}) DIR diff --git a/scripts/util.py b/scripts/util.py t@@ -10,7 +10,7 @@ def get_peers(): q = Queue.Queue() interface.start(q) i, r = q.get() - if not interface.is_connected: + if not interface.is_connected(): raise BaseException("not connected") # 2. get list of peers interface.send_request({'id':0, 'method':'server.peers.subscribe','params':[]}) t@@ -41,7 +41,7 @@ def send_request(peers, request): continue if i.server in peers: peers.remove(i.server) - if i.is_connected: + if i.is_connected(): reached_servers.append(i) else: print "Connection failed:", i.server