|
@@ -40,6 +40,14 @@ class Timer:
|
|
else:
|
|
else:
|
|
globals.app.on_startup(coroutine)
|
|
globals.app.on_startup(coroutine)
|
|
|
|
|
|
|
|
+ def activate(self) -> None:
|
|
|
|
+ """Activate the timer."""
|
|
|
|
+ self.active = True
|
|
|
|
+
|
|
|
|
+ def deactivate(self) -> None:
|
|
|
|
+ """Deactivate the timer."""
|
|
|
|
+ self.active = False
|
|
|
|
+
|
|
async def _run_once(self) -> None:
|
|
async def _run_once(self) -> None:
|
|
try:
|
|
try:
|
|
if not await self._connected():
|
|
if not await self._connected():
|
|
@@ -50,7 +58,7 @@ class Timer:
|
|
if globals.state not in {globals.State.STOPPING, globals.State.STOPPED}:
|
|
if globals.state not in {globals.State.STOPPING, globals.State.STOPPED}:
|
|
await self._invoke_callback()
|
|
await self._invoke_callback()
|
|
finally:
|
|
finally:
|
|
- self.cleanup()
|
|
|
|
|
|
+ self._cleanup()
|
|
|
|
|
|
async def _run_in_loop(self) -> None:
|
|
async def _run_in_loop(self) -> None:
|
|
try:
|
|
try:
|
|
@@ -75,7 +83,7 @@ class Timer:
|
|
globals.handle_exception(e)
|
|
globals.handle_exception(e)
|
|
await asyncio.sleep(self.interval)
|
|
await asyncio.sleep(self.interval)
|
|
finally:
|
|
finally:
|
|
- self.cleanup()
|
|
|
|
|
|
+ self._cleanup()
|
|
|
|
|
|
async def _invoke_callback(self) -> None:
|
|
async def _invoke_callback(self) -> None:
|
|
try:
|
|
try:
|
|
@@ -104,6 +112,6 @@ class Timer:
|
|
globals.log.error(f'Timer cancelled because client is not connected after {timeout} seconds')
|
|
globals.log.error(f'Timer cancelled because client is not connected after {timeout} seconds')
|
|
return False
|
|
return False
|
|
|
|
|
|
- def cleanup(self) -> None:
|
|
|
|
|
|
+ def _cleanup(self) -> None:
|
|
self.slot = None
|
|
self.slot = None
|
|
self.callback = None
|
|
self.callback = None
|