chainsyncer/chainsyncer/backend/memory.py

69 lines
1.4 KiB
Python
Raw Normal View History

2021-04-10 00:30:08 +02:00
# standard imports
import logging
2021-04-15 17:16:31 +02:00
# local imports
from .base import Backend
2021-04-10 00:30:08 +02:00
logg = logging.getLogger().getChild(__name__)
2021-04-15 17:16:31 +02:00
class MemBackend(Backend):
2021-04-10 00:30:08 +02:00
def __init__(self, chain_spec, object_id, target_block=None):
2021-04-15 17:16:31 +02:00
super(MemBackend, self).__init__()
2021-04-10 00:30:08 +02:00
self.object_id = object_id
self.chain_spec = chain_spec
self.block_height = 0
self.tx_height = 0
self.flags = 0
self.target_block = target_block
self.db_session = None
2021-04-15 09:59:45 +02:00
self.filter_names = []
2021-04-10 00:30:08 +02:00
def connect(self):
pass
def disconnect(self):
pass
def set(self, block_height, tx_height):
logg.debug('stateless backend received {} {}'.format(block_height, tx_height))
self.block_height = block_height
self.tx_height = tx_height
def get(self):
return ((self.block_height, self.tx_height), self.flags)
def target(self):
return (self.target_block, self.flags)
def register_filter(self, name):
2021-04-15 09:59:45 +02:00
self.filter_names.append(name)
2021-04-15 17:16:31 +02:00
self.filter_count += 1
2021-04-10 00:30:08 +02:00
def complete_filter(self, n):
v = 1 << n
2021-04-15 14:11:06 +02:00
self.flags |= v
logg.debug('set filter {} {}'.format(self.filter_names[n], v))
2021-04-15 14:11:06 +02:00
def reset_filter(self):
logg.debug('reset filters')
self.flags = 0
2021-04-10 00:30:08 +02:00
2021-04-15 17:16:31 +02:00
def get_flags(self):
return flags
2021-04-10 00:30:08 +02:00
def __str__(self):
return "syncer membackend chain {} cursor".format(self.get())