Skip to content

Commit

Permalink
Create only one telnet reconnect task (#316)
Browse files Browse the repository at this point in the history
  • Loading branch information
ol-iver authored Nov 12, 2024
1 parent c76907f commit 4da5721
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions denonavr/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -544,8 +544,8 @@ async def _async_establish_connection(self) -> None:
"%s: Connection failed on telnet reconnect: %s", self.host, err
)
raise AvrNetworkError(f"OSError: {err}", "telnet connect") from err
_LOGGER.debug("%s: telnet connection established", self.host)
self._protocol = cast(DenonAVRTelnetProtocol, transport_protocol[1])
_LOGGER.debug("%s: telnet connection established", self.host)
self._connection_enabled = True
self._last_message_time = time.monotonic()
self._schedule_monitor()
Expand Down Expand Up @@ -606,7 +606,8 @@ def _handle_disconnected(self) -> None:
self._stop_monitor()
if not self._connection_enabled:
return
self._reconnect_task = asyncio.create_task(self._async_reconnect())
if self._reconnect_task is None:
self._reconnect_task = asyncio.create_task(self._async_reconnect())

async def async_disconnect(self) -> None:
"""Close the connection to the receiver asynchronously."""
Expand Down Expand Up @@ -644,6 +645,12 @@ async def _async_reconnect(self) -> None:
)
except AvrNetworkError as err:
_LOGGER.debug("%s: %s", self.host, err)
except AvrProcessingError as err:
_LOGGER.debug(
"%s: Failed updating state on telnet reconnect: %s",
self.host,
err,
)
except Exception as err: # pylint: disable=broad-except
_LOGGER.error(
"%s: Unexpected exception on telnet reconnect",
Expand All @@ -652,11 +659,13 @@ async def _async_reconnect(self) -> None:
)
else:
_LOGGER.info("%s: Telnet reconnected", self.host)
return
break

await asyncio.sleep(backoff)
backoff = min(30.0, backoff * 2)

self._reconnect_task = None

def register_callback(
self, event: str, callback: Callable[[str, str, str], Awaitable[None]]
) -> None:
Expand Down

0 comments on commit 4da5721

Please sign in to comment.