commit 5bd22d237858353c4f1b35ea1887f2524752b85a
parent 5841f943e89de825a50fadbcd123a3620fe7ad70
Author: ThomasV <thomasv@gitorious>
Date: Thu, 21 May 2015 12:50:26 +0200
follow-up to bd781d600b8ce2bc9dcebebbdb0fb60ad2fb892e: use pipe
Diffstat:
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)