async def _async_start_ssdp_listeners(self) -> None: """Start the SSDP Listeners.""" # Devices are shared between all sources. device_tracker = SsdpDeviceTracker() for source_ip in await self._async_build_source_set(): source_ip_str = str(source_ip) if source_ip.version == 6: source_tuple: AddressTupleVXType = ( source_ip_str, 0, 0, int(getattr(source_ip, "scope_id")), ) else: source_tuple = (source_ip_str, 0) source, target = determine_source_target(source_tuple) self._ssdp_listeners.append( SsdpListener( async_callback=self._ssdp_listener_callback, source=source, target=target, device_tracker=device_tracker, ) ) results = await asyncio.gather( *(listener.async_start() for listener in self._ssdp_listeners), return_exceptions=True, ) failed_listeners = [] for idx, result in enumerate(results): if isinstance(result, Exception): _LOGGER.debug( "Failed to setup listener for %s: %s", self._ssdp_listeners[idx].source, result, ) failed_listeners.append(self._ssdp_listeners[idx]) for listener in failed_listeners: self._ssdp_listeners.remove(listener)
async def _async_start_ssdp_listeners(self) -> None: """Start the SSDP Listeners.""" for source_ip in await self._async_build_source_set(): self._ssdp_listeners.append( SsdpListener( async_callback=self._ssdp_listener_callback, source_ip=source_ip, )) results = await asyncio.gather( *(listener.async_start() for listener in self._ssdp_listeners), return_exceptions=True, ) failed_listeners = [] for idx, result in enumerate(results): if isinstance(result, Exception): _LOGGER.warning( "Failed to setup listener for %s: %s", self._ssdp_listeners[idx].source_ip, result, ) failed_listeners.append(self._ssdp_listeners[idx]) for listener in failed_listeners: self._ssdp_listeners.remove(listener)