async def _on_service_added(self, update):
        """Add a new service."""

        info = update['payload']
        name = info['short_name']

        if name in self.services:
            return

        with self._state_lock:
            new_id = len(self.services)
            serv = states.ServiceState(name, info['long_name'],
                                       info['preregistered'], new_id)
            self.services[name] = serv
            self._name_map[new_id] = name

        # Notify about this new service if anyone is listening
        if self._on_change_callback:
            self._on_change_callback(name, new_id, serv.state, True, False)
Add a new service.