diff options
author | Devaev Maxim <[email protected]> | 2018-09-26 02:57:24 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2018-09-26 02:57:24 +0300 |
commit | 81a5311349564a1016c4af2bf18ae872b650e85b (patch) | |
tree | d01fd027948494e22ae2c14334b98c1515e5e8a4 /kvmd/aioregion.py | |
parent | f3946f102fc167efdc53c73412b2c0d6ac6c72c5 (diff) |
moved kvmd to the root
Diffstat (limited to 'kvmd/aioregion.py')
-rw-r--r-- | kvmd/aioregion.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/kvmd/aioregion.py b/kvmd/aioregion.py new file mode 100644 index 00000000..c2b335f4 --- /dev/null +++ b/kvmd/aioregion.py @@ -0,0 +1,38 @@ +import types + +from typing import Type + + +# ===== +class RegionIsBusyError(Exception): + def __init__(self) -> None: + super().__init__("Performing another operation, please try again later") + + +class AioExclusiveRegion: + def __init__(self, exc_type: Type[RegionIsBusyError]) -> None: + self.__exc_type = exc_type + self.__busy = False + + def is_busy(self) -> bool: + return self.__busy + + def enter(self) -> None: + if not self.__busy: + self.__busy = True + return + raise self.__exc_type() + + def exit(self) -> None: + self.__busy = False + + def __enter__(self) -> None: + self.enter() + + def __exit__( + self, + _exc_type: Type[BaseException], + _exc: BaseException, + _tb: types.TracebackType, + ) -> None: + self.exit() |