commit 8f025db8007b88beee24ea2a030c04751ef8bc06
parent b4bed1ccaa3aca4d29d9d54b042c17912a01ef46
Author: ThomasV <thomasv@gitorious>
Date: Mon, 10 Mar 2014 20:58:18 +0100
add missing Network methods to NetworkProxy
Diffstat:
M | lib/daemon.py | | | 57 | ++++++++++++++++++++++++++++++++++++++------------------- |
1 file changed, 38 insertions(+), 19 deletions(-)
diff --git a/lib/daemon.py b/lib/daemon.py
@@ -86,10 +86,10 @@ class NetworkProxy(threading.Thread):
method, params, callback = self.unanswered_requests.pop(msg_id)
result = response.get('result')
- callback({'method':method, 'params':params, 'result':result, 'id':msg_id})
+ callback(None, {'method':method, 'params':params, 'result':result, 'id':msg_id})
- def send(self, messages, callback):
+ def subscribe(self, messages, callback):
# detect if it is a subscription
with self.lock:
if self.subscriptions.get(callback) is None:
@@ -121,7 +121,7 @@ class NetworkProxy(threading.Thread):
def synchronous_get(self, requests, timeout=100000000):
queue = Queue.Queue()
- ids = self.do_send(requests, queue.put)
+ ids = self.do_send(requests, lambda i,x: queue.put(x))
id2 = ids[:]
res = {}
while ids:
@@ -137,10 +137,29 @@ class NetworkProxy(threading.Thread):
def get_servers(self):
- return self.synchronous_get([('network.getservers',[])])[0]
+ return self.synchronous_get([('network.get_servers',[])])[0]
+
+ def get_header(self, height):
+ return self.synchronous_get([('network.get_header',[height])])[0]
+
+ def get_local_height(self):
+ return self.synchronous_get([('network.get_local_height',[])])[0]
+
+ def is_connected(self):
+ return self.synchronous_get([('network.is_connected',[])])[0]
+
+ def is_up_to_date(self):
+ return self.synchronous_get([('network.is_up_to_date',[])])[0]
+
+ def main_server(self):
+ return self.synchronous_get([('network.main_server',[])])[0]
def stop(self):
- return self.synchronous_get([('network.shutdown',[])])[0]
+ return self.synchronous_get([('daemon.shutdown',[])])[0]
+
+
+ def trigger_callback(self, cb):
+ pass
@@ -199,15 +218,20 @@ class ClientThread(threading.Thread):
_id = request['id']
if method.startswith('network.'):
- if method == 'network.shutdown':
- self.server.running = False
- r = {'id':_id, 'result':True}
- elif method == 'network.getservers':
- servers = self.network.get_servers()
- r = {'id':_id, 'result':servers}
- else:
- r = {'id':_id, 'error':'unknown method'}
- self.queue.put(r)
+ out = {'id':_id}
+ try:
+ f = getattr(self.network, method[8:])
+ except AttributeError:
+ out['error'] = "unknown method"
+ try:
+ out['result'] = f(*params)
+ except BaseException as e:
+ out['error'] =str(e)
+ self.queue.put(out)
+
+ if method == 'daemon.shutdown':
+ self.server.running = False
+ self.queue.put({'id':_id, 'result':True})
return
def cb(i,r):
@@ -234,9 +258,6 @@ class ClientThread(threading.Thread):
#print "-->", r
-#Server:
-# start network() object
-# accept connections, forward requests
class NetworkServer:
@@ -269,8 +290,6 @@ class NetworkServer:
t = time.time()
client = ClientThread(self, self.network, connection)
client.start()
- #print "Done."
-