chainsyncer/chainsyncer/session.py

37 lines
928 B
Python

# standard imports
import uuid
class SyncSession:
def __init__(self, session_store, sync_state, session_id=None, is_default=False):
self.session_store = session_store
if session_id == None:
session_id = str(uuid.uuid4())
is_default = True
self.session_id = session_id
self.is_default = is_default
self.sync_state = sync_state
self.filters = []
self.started = False
def add_filter(self, fltr):
if self.started:
raise RuntimeError('filters cannot be changed after syncer start')
self.sync_state.register(fltr)
self.filters.append(fltr)
def start(self):
self.started = True
def filter(self, conn, block, tx):
self.sync_state.connect()
for fltr in filters:
self.sync_start.lock()
self.sync_start.unlock()
self.sync_start.disconnect()