2022-03-16 19:44:13 +01:00
|
|
|
# standard imports
|
|
|
|
import uuid
|
|
|
|
|
|
|
|
|
|
|
|
class SyncSession:
|
|
|
|
|
2022-03-17 20:36:27 +01:00
|
|
|
def __init__(self, session_store):
|
2022-03-17 11:09:12 +01:00
|
|
|
self.session_store = session_store
|
2022-03-16 19:44:13 +01:00
|
|
|
self.filters = []
|
2022-03-17 11:09:12 +01:00
|
|
|
self.started = False
|
2022-03-16 19:44:13 +01:00
|
|
|
|
|
|
|
|
|
|
|
def add_filter(self, fltr):
|
2022-03-17 11:09:12 +01:00
|
|
|
if self.started:
|
|
|
|
raise RuntimeError('filters cannot be changed after syncer start')
|
2022-03-17 20:36:27 +01:00
|
|
|
self.session_store.register(fltr)
|
2022-03-16 19:44:13 +01:00
|
|
|
self.filters.append(fltr)
|
|
|
|
|
|
|
|
|
|
|
|
def start(self):
|
2022-03-17 11:09:12 +01:00
|
|
|
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()
|
|
|
|
|