def publish(self, event): """ Publishes an event to subscribers. """ if not IEvent.providedBy(event): raise BusError('Invalid dispatching, event should provide IEvent') # Dispatches event to subscribers if self.subscribers.has_key(type(event)): for subscriber in self.subscribers[type(event)]: subscriber(event) # Publishes event on connected buses for follower in self.followers: follower.publish(event)