Example #1
0
 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)
Example #2
0
 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)