class Interface(threading.Thread):
- def register_callback(self, update_callback):
+ def register_callback(self, event, callback):
with self.lock:
- self.update_callbacks.append(update_callback)
+ self.callbacks[event] = callback
- def trigger_callbacks(self):
+ def trigger_callback(self, event):
with self.lock:
- callbacks = self.update_callbacks[:]
- [update() for update in callbacks]
+ callback = self.callbacks.get(event)
+ if callback:
+ callback()
+
def init_server(self, host, port, proxy=None, use_ssl=True):
result = params[1]
params = [addr]
+
response_queue = self.responses[channel]
response_queue.put({'method':method, 'params':params, 'result':result, 'id':msg_id})
- def __init__(self, config=None, loop=False, servers_loaded_callback=None):
+ def __init__(self, config=None, loop=False):
if config is None:
from simple_config import SimpleConfig
self.daemon = True
self.loop = loop
self.config = config
- self.servers_loaded_callback = servers_loaded_callback
self.subscriptions = {}
self.responses = {}
self.responses['default'] = Queue.Queue()
- self.update_callbacks = []
+ self.callbacks = {}
self.lock = threading.Lock()
self.init_interface()
raise BaseException('no server available')
if self.is_connected:
- print "Connected to " + self.connection_msg
self.send([('server.version', [ELECTRUM_VERSION])])
- #self.send([('server.banner',[])], 'synchronizer')
+ self.trigger_callback('connected')
else:
- print_error("Failed to connect " + self.connection_msg)
+ self.trigger_callback('notconnected')
+ #print_error("Failed to connect " + self.connection_msg)
def init_with_server(self, config):
def run(self):
while True:
self.run_tcp() if self.protocol in 'st' else self.run_http()
- self.trigger_callbacks()
+ self.trigger_callback('disconnected')
if not self.loop: break
time.sleep(5)