1
0

adapt network dialog to daemon

This commit is contained in:
ThomasV
2014-07-25 09:11:56 +02:00
parent 09e4efc439
commit 8196bc5779
5 changed files with 48 additions and 43 deletions

View File

@@ -109,8 +109,10 @@ class ClientThread(threading.Thread):
try:
out['result'] = f(*params)
except BaseException as e:
out['error'] =str(e)
self.queue.put(out)
out['error'] = str(e)
print_error("network error", str(e))
self.queue.put(out)
return
def cb(i,r):
@@ -120,7 +122,12 @@ class ClientThread(threading.Thread):
r['id'] = my_id
self.queue.put(r)
new_id = self.network.interface.send([(method, params)], cb) [0]
try:
new_id = self.network.interface.send([(method, params)], cb) [0]
except Exception as e:
self.queue.put(out = {'id':_id, 'error':str(e)})
return
self.unanswered_requests[new_id] = _id
@@ -162,7 +169,7 @@ class NetworkServer:
def add_client(self, client):
for key in ['status','banner','updated','servers']:
for key in ['status','banner','updated','servers','interfaces']:
value = self.get_status_value(key)
client.queue.put({'method':'network.status', 'params':[key, value]})
with self.lock:
@@ -182,7 +189,9 @@ class NetworkServer:
elif key == 'updated':
value = self.network.get_local_height()
elif key == 'servers':
value = self.network.irc_servers
value = self.network.get_servers()
elif key == 'interfaces':
value = self.network.get_interfaces()
return value
def trigger_callback(self, key):

View File

@@ -94,7 +94,7 @@ class Network(threading.Thread):
if not self.default_server:
self.default_server = pick_random_server(self.protocol)
self.irc_servers = [] # returned by interface (list from irc)
self.irc_servers = {} # returned by interface (list from irc)
self.pending_servers = set([])
self.disconnected_servers = set([])
self.recent_servers = self.config.get('recent_servers',[]) # successful connections
@@ -119,29 +119,20 @@ class Network(threading.Thread):
self.connection_status = 'disconnected'
def set_status(self, status):
self.connection_status = status
self.trigger_callback('status')
def is_connected(self):
return self.interface and self.interface.is_connected
def is_up_to_date(self):
return self.interface.is_up_to_date()
def main_server(self):
return self.interface.server
def send_subscriptions(self):
for cb, sub in self.subscriptions.items():
self.interface.send(sub, cb)
def subscribe(self, messages, callback):
with self.lock:
if self.subscriptions.get(callback) is None:
@@ -195,6 +186,14 @@ class Network(threading.Thread):
server = random.choice( choice_list )
return server
def get_parameters(self):
host, port, protocol = self.default_server.split(':')
proxy = self.proxy
auto_connect = self.config.get('auto_cycle', True)
return host, port, protocol, proxy, auto_connect
def get_interfaces(self):
return self.interfaces.keys()
def get_servers(self):
if self.irc_servers:

View File

@@ -55,9 +55,10 @@ class NetworkProxy(threading.Thread):
# status variables
self.status = 'disconnected'
self.servers = []
self.servers = {}
self.banner = ''
self.height = 0
self.interfaces = []
def is_running(self):
return self.running
@@ -101,6 +102,8 @@ class NetworkProxy(threading.Thread):
self.height = value
elif key == 'servers':
self.servers = value
elif key == 'interfaces':
self.interfaces = value
self.trigger_callback(key)
return
@@ -166,6 +169,9 @@ class NetworkProxy(threading.Thread):
def get_servers(self):
return self.servers
def get_interfaces(self):
return self.interfaces
def get_header(self, height):
return self.synchronous_get([('network.get_header',[height])])[0]
@@ -178,8 +184,11 @@ class NetworkProxy(threading.Thread):
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 get_parameters(self):
return self.synchronous_get([('network.get_parameters',[])])[0]
def set_parameters(self, *args):
return self.synchronous_get([('network.set_parameters',args)])[0]
def stop(self):
self.running = False

View File

@@ -65,7 +65,7 @@ class WalletSynchronizer(threading.Thread):
self.run_interface()
def run_interface(self):
print_error("synchronizer: connected to", self.network.main_server())
#print_error("synchronizer: connected to", self.network.get_parameters())
requested_tx = []
missing_tx = []