diff options
author | Maxim Devaev <[email protected]> | 2022-08-07 19:04:32 +0300 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2022-08-07 19:04:32 +0300 |
commit | ec9785b4be4afb8667e6968a0454aeca62a190e2 (patch) | |
tree | 0b5c7d1b03041867c78f5533a8dd8f488711b073 /kvmd/plugins/msd/otg | |
parent | aa630988cc09f31d412a62c5480d4bec1a7c626e (diff) |
simplified AioNotifier()
Diffstat (limited to 'kvmd/plugins/msd/otg')
-rw-r--r-- | kvmd/plugins/msd/otg/__init__.py | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/kvmd/plugins/msd/otg/__init__.py b/kvmd/plugins/msd/otg/__init__.py index 2d556048..8d1ee8a5 100644 --- a/kvmd/plugins/msd/otg/__init__.py +++ b/kvmd/plugins/msd/otg/__init__.py @@ -121,13 +121,13 @@ class _State: async def busy(self, check_online: bool=True) -> AsyncGenerator[None, None]: async with self._region: async with self._lock: - await self.__notifier.notify() + self.__notifier.notify() if check_online: if self.vd is None: raise MsdOfflineError() assert self.storage yield - await self.__notifier.notify() + self.__notifier.notify() def is_busy(self) -> bool: return self._region.is_busy() @@ -173,7 +173,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes logger = get_logger(0) logger.info("Using OTG gadget %r as MSD", gadget) - aiotools.run_sync(self.__reload_state()) + aiotools.run_sync(self.__reload_state(notify=False)) @classmethod def get_plugin_options(cls) -> Dict: @@ -334,7 +334,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes async with self.__state._region: # pylint: disable=protected-access try: async with self.__state._lock: # pylint: disable=protected-access - await self.__notifier.notify() + self.__notifier.notify() assert self.__state.storage assert self.__state.vd @@ -361,10 +361,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes except asyncio.CancelledError: pass finally: - try: - await asyncio.shield(self.__notifier.notify()) - except asyncio.CancelledError: - pass + self.__notifier.notify() @contextlib.asynccontextmanager async def write_image(self, name: str, size: int, remove_incomplete: Optional[bool]) -> AsyncGenerator[MsdFileWriter, None]: @@ -373,7 +370,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes path: str = "" try: async with self.__state._lock: # pylint: disable=protected-access - await self.__notifier.notify() + self.__notifier.notify() assert self.__state.storage assert self.__state.vd @@ -395,7 +392,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes chunk_size=self.__write_chunk_size, ).open() - await self.__notifier.notify() + self.__notifier.notify() yield self.__writer self.__set_image_complete(name, self.__writer.is_complete()) @@ -421,10 +418,6 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes await asyncio.shield(self.__reload_state()) except asyncio.CancelledError: pass - try: - await asyncio.shield(self.__notifier.notify()) - except asyncio.CancelledError: - pass @aiotools.atomic async def remove(self, name: str) -> None: @@ -470,7 +463,6 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes while True: # Активно ждем, пока не будут на месте все каталоги. await self.__reload_state() - await self.__notifier.notify() if self.__state.vd: break await asyncio.sleep(5) @@ -483,7 +475,6 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes # После установки вотчеров еще раз проверяем стейт, чтобы ничего не потерять await self.__reload_state() - await self.__notifier.notify() while self.__state.vd: # Если живы после предыдущей проверки need_restart = False @@ -499,12 +490,11 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes break if need_reload_state: await self.__reload_state() - await self.__notifier.notify() except Exception: logger.exception("Unexpected MSD watcher error") time.sleep(1) - async def __reload_state(self) -> None: + async def __reload_state(self, notify: bool=True) -> None: logger = get_logger(0) async with self.__state._lock: # pylint: disable=protected-access try: @@ -541,6 +531,8 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes self.__state.vd.image = None self.__state.vd.connected = False + if notify: + self.__notifier.notify() async def __setup_initial(self) -> None: if self.__initial_image: |