Exemple #1
0
    def async_fire(self,
                   event_type: str,
                   event_data=None,
                   origin=EventOrigin.local,
                   wait=False):
        """Fire an event.

        This method must be run in the event loop.
        """
        if event_type != EVENT_HOMEASSISTANT_STOP and \
                self._hass.state == CoreState.stopping:
            raise ShuttingDown('Home Assistant is shutting down.')

        # Copy the list of the current listeners because some listeners
        # remove themselves as a listener while being executed which
        # causes the iterator to be confused.
        get = self._listeners.get
        listeners = get(MATCH_ALL, []) + get(event_type, [])

        event = Event(event_type, event_data, origin)

        if event_type != EVENT_TIME_CHANGED:
            _LOGGER.info("Bus:Handling %s", event)

        if not listeners:
            return

        for func in listeners:
            self._hass.async_add_job(func, event)
Exemple #2
0
    def async_fire(self,
                   event_type: str,
                   event_data=None,
                   origin=EventOrigin.local,
                   wait=False):
        """Fire an event.

        This method must be run in the event loop.
        """
        if event_type != EVENT_HOMEASSISTANT_STOP and \
                self._hass.state == CoreState.stopping:
            raise ShuttingDown("Home Assistant is shutting down")

        listeners = self._listeners.get(event_type, [])

        # EVENT_HOMEASSISTANT_CLOSE should go only to his listeners
        if event_type != EVENT_HOMEASSISTANT_CLOSE:
            listeners = self._listeners.get(MATCH_ALL, []) + listeners

        event = Event(event_type, event_data, origin)

        if event_type != EVENT_TIME_CHANGED:
            _LOGGER.info("Bus:Handling %s", event)

        if not listeners:
            return

        for func in listeners:
            self._hass.async_add_job(func, event)