예제 #1
0
    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)