diff options
-rw-r--r-- | kvmd/aiotools.py | 4 | ||||
-rw-r--r-- | kvmd/apps/janus/runner.py | 4 | ||||
-rw-r--r-- | kvmd/apps/kvmd/auth.py | 2 | ||||
-rw-r--r-- | kvmd/apps/kvmd/streamer.py | 10 | ||||
-rw-r--r-- | kvmd/apps/kvmd/ugpio.py | 10 | ||||
-rw-r--r-- | kvmd/plugins/atx/gpio.py | 4 | ||||
-rw-r--r-- | kvmd/plugins/hid/_mcu/__init__.py | 2 | ||||
-rw-r--r-- | kvmd/plugins/hid/bt/__init__.py | 2 | ||||
-rw-r--r-- | kvmd/plugins/msd/otg/__init__.py | 10 | ||||
-rw-r--r-- | kvmd/plugins/msd/relay/__init__.py | 12 |
10 files changed, 30 insertions, 30 deletions
diff --git a/kvmd/aiotools.py b/kvmd/aiotools.py index 07981fde..4f05501c 100644 --- a/kvmd/aiotools.py +++ b/kvmd/aiotools.py @@ -125,10 +125,10 @@ def shield_fg(aw: Awaitable): # type: ignore return outer -def atomic(func: _FunctionT) -> _FunctionT: +def atomic_fg(func: _FunctionT) -> _FunctionT: @functools.wraps(func) async def wrapper(*args: Any, **kwargs: Any) -> Any: - return (await asyncio.shield(func(*args, **kwargs))) + return (await shield_fg(func(*args, **kwargs))) return typing.cast(_FunctionT, wrapper) diff --git a/kvmd/apps/janus/runner.py b/kvmd/apps/janus/runner.py index 204f8a9e..799fd94c 100644 --- a/kvmd/apps/janus/runner.py +++ b/kvmd/apps/janus/runner.py @@ -126,13 +126,13 @@ class JanusRunner: # pylint: disable=too-many-instance-attributes # ===== - @aiotools.atomic + @aiotools.atomic_fg async def __start_janus(self, netcfg: _Netcfg) -> None: get_logger(0).info("Starting Janus ...") assert not self.__janus_task self.__janus_task = asyncio.create_task(self.__janus_task_loop(netcfg)) - @aiotools.atomic + @aiotools.atomic_fg async def __stop_janus(self) -> None: if self.__janus_task: get_logger(0).info("Stopping Janus ...") diff --git a/kvmd/apps/kvmd/auth.py b/kvmd/apps/kvmd/auth.py index 8bd2286d..0f437a6b 100644 --- a/kvmd/apps/kvmd/auth.py +++ b/kvmd/apps/kvmd/auth.py @@ -113,7 +113,7 @@ class AuthManager: assert self.__enabled return self.__tokens.get(token) - @aiotools.atomic + @aiotools.atomic_fg async def cleanup(self) -> None: if self.__enabled: assert self.__internal_service diff --git a/kvmd/apps/kvmd/streamer.py b/kvmd/apps/kvmd/streamer.py index cc753aff..fb209033 100644 --- a/kvmd/apps/kvmd/streamer.py +++ b/kvmd/apps/kvmd/streamer.py @@ -221,7 +221,7 @@ class Streamer: # pylint: disable=too-many-instance-attributes # ===== - @aiotools.atomic + @aiotools.atomic_fg async def ensure_start(self, reset: bool) -> None: if not self.__streamer_task or self.__stop_task: logger = get_logger(0) @@ -241,7 +241,7 @@ class Streamer: # pylint: disable=too-many-instance-attributes logger.info("Starting streamer ...") await self.__inner_start() - @aiotools.atomic + @aiotools.atomic_fg async def ensure_stop(self, immediately: bool) -> None: if self.__streamer_task: logger = get_logger(0) @@ -384,7 +384,7 @@ class Streamer: # pylint: disable=too-many-instance-attributes # ===== - @aiotools.atomic + @aiotools.atomic_fg async def cleanup(self) -> None: await self.ensure_stop(immediately=True) if self.__http_session: @@ -409,12 +409,12 @@ class Streamer: # pylint: disable=too-many-instance-attributes # ===== - @aiotools.atomic + @aiotools.atomic_fg async def __inner_start(self) -> None: assert not self.__streamer_task self.__streamer_task = asyncio.create_task(self.__streamer_task_loop()) - @aiotools.atomic + @aiotools.atomic_fg async def __inner_stop(self) -> None: assert self.__streamer_task self.__streamer_task.cancel() diff --git a/kvmd/apps/kvmd/ugpio.py b/kvmd/apps/kvmd/ugpio.py index d4b0f16a..b29b7ce4 100644 --- a/kvmd/apps/kvmd/ugpio.py +++ b/kvmd/apps/kvmd/ugpio.py @@ -172,7 +172,7 @@ class _GpioOutput: # pylint: disable=too-many-instance-attributes raise GpioSwitchNotSupported() await self.__run_action(wait, "switch", self.__inner_switch, state) - @aiotools.atomic + @aiotools.atomic_fg async def pulse(self, delay: float, wait: bool) -> None: if not self.__pulse_delay: raise GpioPulseNotSupported() @@ -181,7 +181,7 @@ class _GpioOutput: # pylint: disable=too-many-instance-attributes # ===== - @aiotools.atomic + @aiotools.atomic_fg async def __run_action(self, wait: bool, name: str, func: Callable, *args: Any) -> None: if wait: async with self.__region: @@ -192,20 +192,20 @@ class _GpioOutput: # pylint: disable=too-many-instance-attributes self.__region, self.__action_task_wrapper, name, func, *args, ) - @aiotools.atomic + @aiotools.atomic_fg async def __action_task_wrapper(self, name: str, func: Callable, *args: Any) -> None: try: return (await func(*args)) except GpioDriverOfflineError: get_logger(0).error("Can't perform %s of %s or operation was not completed: driver offline", name, self) - @aiotools.atomic + @aiotools.atomic_fg async def __inner_switch(self, state: bool) -> None: await self.__write(state) get_logger(0).info("Ensured switch %s to state=%d", self, state) await asyncio.sleep(self.__busy_delay) - @aiotools.atomic + @aiotools.atomic_fg async def __inner_pulse(self, delay: float) -> None: try: await self.__write(True) diff --git a/kvmd/plugins/atx/gpio.py b/kvmd/plugins/atx/gpio.py index a4dabdfc..8d41e53d 100644 --- a/kvmd/plugins/atx/gpio.py +++ b/kvmd/plugins/atx/gpio.py @@ -185,7 +185,7 @@ class Plugin(BaseAtx): # pylint: disable=too-many-instance-attributes async def __get_power(self) -> bool: return (await self.get_state())["leds"]["power"] - @aiotools.atomic + @aiotools.atomic_fg async def __click(self, name: str, line: gpiod.Line, delay: float, wait: bool) -> None: if wait: async with self.__region: @@ -196,7 +196,7 @@ class Plugin(BaseAtx): # pylint: disable=too-many-instance-attributes self.__region, self.__inner_click, name, line, delay, ) - @aiotools.atomic + @aiotools.atomic_fg async def __inner_click(self, name: str, line: gpiod.Line, delay: float) -> None: await aiogp.pulse(line, delay, 1) get_logger(0).info("Clicked ATX button %r", name) diff --git a/kvmd/plugins/hid/_mcu/__init__.py b/kvmd/plugins/hid/_mcu/__init__.py index 595abbc4..0de017df 100644 --- a/kvmd/plugins/hid/_mcu/__init__.py +++ b/kvmd/plugins/hid/_mcu/__init__.py @@ -234,7 +234,7 @@ class BaseMcuHid(BaseHid, multiprocessing.Process): # pylint: disable=too-many- async def reset(self) -> None: self.__reset_required_event.set() - @aiotools.atomic + @aiotools.atomic_fg async def cleanup(self) -> None: if self.is_alive(): get_logger(0).info("Stopping HID daemon ...") diff --git a/kvmd/plugins/hid/bt/__init__.py b/kvmd/plugins/hid/bt/__init__.py index 5b6a9fc7..ce33fd26 100644 --- a/kvmd/plugins/hid/bt/__init__.py +++ b/kvmd/plugins/hid/bt/__init__.py @@ -164,7 +164,7 @@ class Plugin(BaseHid): # pylint: disable=too-many-instance-attributes self.clear_events() self.__server.queue_event(ResetEvent()) - @aiotools.atomic + @aiotools.atomic_fg async def cleanup(self) -> None: if self.__proc is not None: if self.__proc.is_alive(): diff --git a/kvmd/plugins/msd/otg/__init__.py b/kvmd/plugins/msd/otg/__init__.py index cb781fae..5a8b86a6 100644 --- a/kvmd/plugins/msd/otg/__init__.py +++ b/kvmd/plugins/msd/otg/__init__.py @@ -246,7 +246,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes async def systask(self) -> None: await self.__watch_inotify() - @aiotools.atomic + @aiotools.atomic_fg async def reset(self) -> None: async with self.__state.busy(check_online=False): try: @@ -257,14 +257,14 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes except Exception: get_logger(0).exception("Can't reset MSD properly") - @aiotools.atomic + @aiotools.atomic_fg async def cleanup(self) -> None: await self.__close_reader() await self.__close_writer() # ===== - @aiotools.atomic + @aiotools.atomic_fg async def set_params( self, name: Optional[str]=None, @@ -299,7 +299,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes if rw: self.__state.vd.cdrom = False - @aiotools.atomic + @aiotools.atomic_fg async def set_connected(self, connected: bool) -> None: async with self.__state.busy(): assert self.__state.vd @@ -407,7 +407,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes # так что форсим обновление вручную, чтобы получить актуальное состояние. await aiotools.shield_fg(self.__reload_state()) - @aiotools.atomic + @aiotools.atomic_fg async def remove(self, name: str) -> None: async with self.__state.busy(): assert self.__state.storage diff --git a/kvmd/plugins/msd/relay/__init__.py b/kvmd/plugins/msd/relay/__init__.py index febc3750..d80cd410 100644 --- a/kvmd/plugins/msd/relay/__init__.py +++ b/kvmd/plugins/msd/relay/__init__.py @@ -156,14 +156,14 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes prev_state = state await self.__notifier.wait() - @aiotools.atomic + @aiotools.atomic_fg async def reset(self) -> None: await aiotools.run_region_task( "Can't reset MSD or operation was not completed", self.__region, self.__inner_reset, ) - @aiotools.atomic + @aiotools.atomic_fg async def __inner_reset(self) -> None: await self.__gpio.reset() self.__gpio.switch_to_local() @@ -171,7 +171,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes await self.__load_device_info() get_logger(0).info("MSD reset has been successful") - @aiotools.atomic + @aiotools.atomic_fg async def cleanup(self) -> None: try: await self.__close_device_writer() @@ -180,7 +180,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes # ===== - @aiotools.atomic + @aiotools.atomic_fg async def set_params( self, name: Optional[str]=None, @@ -196,7 +196,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes if rw is not None: raise MsdRwNotSupported() - @aiotools.atomic + @aiotools.atomic_fg async def set_connected(self, connected: bool) -> None: async with self.__working(): async with self.__region: @@ -254,7 +254,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes finally: await aiotools.shield_fg(self.__load_device_info()) - @aiotools.atomic + @aiotools.atomic_fg async def remove(self, name: str) -> None: async with self.__working(): raise MsdMultiNotSupported() |