X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/7cc2d685faeae212e49f8fe432a35e3db6b07417..ef9e1aa6b026f4f309c00f10002382701e9a2c1c:/python/mcp/__init__.py diff --git a/python/mcp/__init__.py b/python/mcp/__init__.py index 2ee42c2..0e52a3c 100644 --- a/python/mcp/__init__.py +++ b/python/mcp/__init__.py @@ -30,3 +30,25 @@ class Enum(object): yield (key, val) +class ContextManaged: + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.deinit() + +def Lockable(ContextManaged): + _locked = False + + def try_lock(self): + if self._locked: + return False + else: + self._locked=True + return True + + def unlock(self): + if self._locked: + self._locked = False + else: + raise ValueError("Not locked")