Browse Source

Use a counter for ID counting

patch-2
Neil Booth 7 years ago
parent
commit
9ebd2e86e8
  1. 12
      electrumx/server/daemon.py

12
electrumx/server/daemon.py

@ -9,6 +9,7 @@
daemon.'''
import asyncio
import itertools
import json
import time
from calendar import timegm
@ -33,6 +34,7 @@ class Daemon(object):
WARMING_UP = -28
RPC_MISC_ERROR = -1
id_counter = itertools.count()
class DaemonWarmingUpError(Exception):
'''Raised when the daemon returns an error in its results.'''
@ -47,14 +49,8 @@ class Daemon(object):
self.workqueue_semaphore = asyncio.Semaphore(value=max_workqueue)
self.down = False
self.last_error_time = 0
self.req_id = 0
self._available_rpcs = {} # caches results for _is_rpc_available()
def next_req_id(self):
'''Retrns the next request ID.'''
self.req_id += 1
return self.req_id
def set_urls(self, urls):
'''Set the URLS to the given list, and switch to the first one.'''
if not urls:
@ -162,7 +158,7 @@ class Daemon(object):
raise self.DaemonWarmingUpError
raise DaemonError(err)
payload = {'method': method, 'id': self.next_req_id()}
payload = {'method': method, 'id': next(self.id_counter)}
if params:
payload['params'] = params
return await self._send(payload, processor)
@ -181,7 +177,7 @@ class Daemon(object):
return [item['result'] for item in result]
raise DaemonError(errs)
payload = [{'method': method, 'params': p, 'id': self.next_req_id()}
payload = [{'method': method, 'params': p, 'id': next(self.id_counter)}
for p in params_iterable]
if payload:
return await self._send(payload, processor)

Loading…
Cancel
Save