electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 5bd22d237858353c4f1b35ea1887f2524752b85a
parent 5841f943e89de825a50fadbcd123a3620fe7ad70
Author: ThomasV <thomasv@gitorious>
Date:   Thu, 21 May 2015 12:50:26 +0200

follow-up to bd781d600b8ce2bc9dcebebbdb0fb60ad2fb892e: use pipe

Diffstat:
Mlib/daemon.py | 19+++++--------------
Mlib/network.py | 6+++---
Mlib/network_proxy.py | 2+-
3 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/lib/daemon.py b/lib/daemon.py @@ -117,14 +117,9 @@ class NetworkServer(util.DaemonThread): util.DaemonThread.__init__(self) self.debug = False self.config = config - # network sends responses on that queue - self.network_queue = Queue.Queue() - self.requests_queue = Queue.Queue() - self.network = Network(self.requests_queue, self.network_queue, config) - - self.running = False + self.pipe = util.QueuePipe() + self.network = Network(self.pipe, config) self.lock = threading.RLock() - # each GUI is a client of the daemon self.clients = [] self.request_id = 0 @@ -148,18 +143,16 @@ class NetworkServer(util.DaemonThread): self.request_id += 1 self.requests[self.request_id] = (request['id'], client) request['id'] = self.request_id - if self.debug: print_error("-->", request) - self.requests_queue.put(request) - + self.pipe.send(request) def run(self): self.network.start() while self.is_running(): try: - response = self.network_queue.get(timeout=0.1) - except Queue.Empty: + response = self.pipe.get() + except util.timeout: continue if self.debug: print_error("<--", response) @@ -176,12 +169,10 @@ class NetworkServer(util.DaemonThread): for client in self.clients: if repr((m, v)) in client.subscriptions: client.response_queue.put(response) - self.network.stop() print_error("server exiting") - def daemon_loop(server): s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) diff --git a/lib/network.py b/lib/network.py @@ -123,7 +123,7 @@ def serialize_server(host, port, protocol): class Network(util.DaemonThread): - def __init__(self, requests_queue, response_queue, config=None): + def __init__(self, pipe, config=None): if config is None: config = {} # Do not use mutables as default values! util.DaemonThread.__init__(self) @@ -132,8 +132,8 @@ class Network(util.DaemonThread): self.blockchain = Blockchain(self.config, self) self.interfaces = {} self.queue = Queue.Queue() - self.requests_queue = requests_queue - self.response_queue = response_queue + self.requests_queue = pipe.send_queue + self.response_queue = pipe.get_queue # Server for addresses and transactions self.default_server = self.config.get('server') # Sanitize default server diff --git a/lib/network_proxy.py b/lib/network_proxy.py @@ -55,7 +55,7 @@ class NetworkProxy(util.DaemonThread): self.network = None else: self.pipe = util.QueuePipe() - self.network = Network(self.pipe.send_queue, self.pipe.get_queue, config) + self.network = Network(self.pipe, config) self.network.start() for key in ['status','banner','updated','servers','interfaces']: value = self.network.get_status_value(key)