diff --git a/monkey/common/event_queue/pypubsub_event_queue.py b/monkey/common/event_queue/pypubsub_event_queue.py index 0910eee73..b28bea802 100644 --- a/monkey/common/event_queue/pypubsub_event_queue.py +++ b/monkey/common/event_queue/pypubsub_event_queue.py @@ -4,6 +4,8 @@ from common.events import AbstractEvent from .i_event_queue import IEventQueue +INTERNAL_ALL_EVENT_TYPES_TOPIC = "internal_all_event_types" + class PyPubSubEventQueue(IEventQueue): def __init__(self, pypubsub_publisher): @@ -21,6 +23,11 @@ class PyPubSubEventQueue(IEventQueue): event_type_name = event_type.__name__ self._pypubsub_publisher.subscribe(listener=subscriber, topicName=event_type_name) + def subscribe_all_event_types(self, subscriber: Callable[[AbstractEvent], None]): + self._pypubsub_publisher.subscribe( + listener=subscriber, topicName=INTERNAL_ALL_EVENT_TYPES_TOPIC + ) + def subscribe_tag(self, tag: str, subscriber: Callable[[AbstractEvent], None]): self._pypubsub_publisher.subscribe(listener=subscriber, topicName=tag) @@ -31,6 +38,9 @@ class PyPubSubEventQueue(IEventQueue): event_type_name = event.__name__ self._pypubsub_publisher.sendMessage(event_type_name, **data) + # publish to all events' topic + self._pypubsub_publisher.sendMessage(INTERNAL_ALL_EVENT_TYPES_TOPIC, **data) + # publish to tags' topics for tag in event.tags: self._pypubsub_publisher.sendMessage(tag, **data)