chainsyncer/cic_syncer/driver.py

66 lines
1.4 KiB
Python
Raw Normal View History

2021-02-03 19:40:03 +01:00
# standard imports
import uuid
import logging
# third-party imports
import websockets
logg = logging.getLogger()
class Syncer:
def __init__(self, backend):
2021-02-03 20:55:39 +01:00
self.cursor = None
self.running = True
self.backend = backend
self.filter = []
def chain(self):
"""Returns the string representation of the chain spec for the chain the syncer is running on.
:returns: Chain spec string
:rtype: str
"""
return self.bc_cache.chain()
2021-02-03 19:40:03 +01:00
class MinedSyncer(Syncer):
def __init__(self, backend):
super(HeadSyncer, self).__init__(backend)
2021-02-03 20:55:39 +01:00
def loop(self, interval):
while self.running and Syncer.running_global:
getter = self.backend.connect()
logg.debug('loop execute')
e = self.get(getter)
2021-02-03 19:40:03 +01:00
class HeadSyncer(MinedSyncer):
def __init__(self, backend):
super(HeadSyncer, self).__init__(backend)
def get(self, getter):
2021-02-03 20:55:39 +01:00
(block_number, tx_number) = self.backend.get()
2021-02-03 19:40:03 +01:00
block_hash = []
try:
uu = uuid.uuid4()
req = {
'jsonrpc': '2.0',
'method': 'eth_getBlock',
'id': str(uu),
'param': [block_number],
2021-02-03 20:55:39 +01:00
}
2021-02-03 19:40:03 +01:00
logg.debug(req)
except Exception as e:
logg.error(e)
return block_hash