commit
c7945f4199
|
@ -436,14 +436,20 @@ class Network(util.DaemonThread):
|
||||||
self.response_queue.put(response)
|
self.response_queue.put(response)
|
||||||
|
|
||||||
def handle_requests(self):
|
def handle_requests(self):
|
||||||
while self.is_running():
|
'''Some requests require connectivity, others we handle locally in
|
||||||
try:
|
process_request() and must do so in order to e.g. prevent the
|
||||||
request = self.requests_queue.get_nowait()
|
daemon seeming unresponsive.
|
||||||
except Queue.Empty:
|
'''
|
||||||
break
|
unhandled = []
|
||||||
self.process_request(request)
|
while not self.requests_queue.empty():
|
||||||
|
request = self.requests_queue.get()
|
||||||
|
if not self.process_request(request):
|
||||||
|
unhandled.append(request)
|
||||||
|
for request in unhandled:
|
||||||
|
self.requests_queue.put(request)
|
||||||
|
|
||||||
def process_request(self, request):
|
def process_request(self, request):
|
||||||
|
'''Returns true if the request was processed.'''
|
||||||
method = request['method']
|
method = request['method']
|
||||||
params = request['params']
|
params = request['params']
|
||||||
_id = request['id']
|
_id = request['id']
|
||||||
|
@ -460,18 +466,23 @@ class Network(util.DaemonThread):
|
||||||
traceback.print_exc(file=sys.stdout)
|
traceback.print_exc(file=sys.stdout)
|
||||||
self.print_error("network error", str(e))
|
self.print_error("network error", str(e))
|
||||||
self.response_queue.put(out)
|
self.response_queue.put(out)
|
||||||
return
|
return True
|
||||||
|
|
||||||
if method == 'blockchain.address.subscribe':
|
if method == 'blockchain.address.subscribe':
|
||||||
addr = params[0]
|
addr = params[0]
|
||||||
self.subscribed_addresses.add(addr)
|
self.subscribed_addresses.add(addr)
|
||||||
if addr in self.addr_responses:
|
if addr in self.addr_responses:
|
||||||
self.response_queue.put({'id':_id, 'result':self.addr_responses[addr]})
|
self.response_queue.put({'id':_id, 'result':self.addr_responses[addr]})
|
||||||
return
|
return True
|
||||||
|
|
||||||
|
# This request needs connectivity. If we don't have an
|
||||||
|
# interface, we cannot process it.
|
||||||
|
if not self.interface:
|
||||||
|
return False
|
||||||
|
|
||||||
# store unanswered request
|
|
||||||
self.unanswered_requests[_id] = request
|
self.unanswered_requests[_id] = request
|
||||||
self.interface.send_request(request)
|
self.interface.send_request(request)
|
||||||
|
return True
|
||||||
|
|
||||||
def check_interfaces(self):
|
def check_interfaces(self):
|
||||||
now = time.time()
|
now = time.time()
|
||||||
|
|
Loading…
Reference in New Issue