import threading
from .BaseSubscriber import BaseSubscriber


# send message to multi subscriber
class EventBus:

    def __init__(self):

        self.subscribers:list[BaseSubscriber] = []
        self._lock = threading.Lock()

    def clear_all(self):
        with self._lock:
            self.subscribers = []

    def subscribe(self, subscriber):
        with self._lock:
            self.subscribers.append(subscriber)

    def emit(self, event):

        for subscriber in self.subscribers:
            subscriber.publish(event)
        
    



