added event pause/resume functionality
This commit is contained in:
parent
bfd526ad7c
commit
f27f738351
|
@ -13,7 +13,20 @@ class EventSystem(Singleton):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.subscribers = defaultdict(list)
|
self.subscribers = defaultdict(list)
|
||||||
|
self._is_paused = False
|
||||||
|
|
||||||
|
self._subscribe_to_events()
|
||||||
|
|
||||||
|
|
||||||
|
def _subscribe_to_events(self):
|
||||||
|
self.subscribe("pause_event_processing", self._pause_processing_events)
|
||||||
|
self.subscribe("resume_event_processing", self._resume_processing_events)
|
||||||
|
|
||||||
|
def _pause_processing_events(self):
|
||||||
|
self._is_paused = True
|
||||||
|
|
||||||
|
def _resume_processing_events(self):
|
||||||
|
self._is_paused = False
|
||||||
|
|
||||||
def subscribe(self, event_type, fn):
|
def subscribe(self, event_type, fn):
|
||||||
self.subscribers[event_type].append(fn)
|
self.subscribers[event_type].append(fn)
|
||||||
|
@ -25,6 +38,9 @@ class EventSystem(Singleton):
|
||||||
self.subscribers.pop(event_type, None)
|
self.subscribers.pop(event_type, None)
|
||||||
|
|
||||||
def emit(self, event_type, data = None):
|
def emit(self, event_type, data = None):
|
||||||
|
if self._is_paused and event_type != "resume_event_processing":
|
||||||
|
return
|
||||||
|
|
||||||
if event_type in self.subscribers:
|
if event_type in self.subscribers:
|
||||||
for fn in self.subscribers[event_type]:
|
for fn in self.subscribers[event_type]:
|
||||||
if data:
|
if data:
|
||||||
|
@ -36,6 +52,9 @@ class EventSystem(Singleton):
|
||||||
fn()
|
fn()
|
||||||
|
|
||||||
def emit_and_await(self, event_type, data = None):
|
def emit_and_await(self, event_type, data = None):
|
||||||
|
if self._is_paused and event_type != "resume_event_processing":
|
||||||
|
return
|
||||||
|
|
||||||
""" NOTE: Should be used when signal has only one listener and vis-a-vis """
|
""" NOTE: Should be used when signal has only one listener and vis-a-vis """
|
||||||
if event_type in self.subscribers:
|
if event_type in self.subscribers:
|
||||||
response = None
|
response = None
|
||||||
|
|
Loading…
Reference in New Issue