commit:     be43719867e694a08699aa07c2f5f519df26b59b
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 18 04:33:52 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Thu Apr 23 18:20:35 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=be437198

catalyst: Add read/write_lock contextmanagers

Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 catalyst/lock.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/catalyst/lock.py b/catalyst/lock.py
index ab005163..e31745b2 100644
--- a/catalyst/lock.py
+++ b/catalyst/lock.py
@@ -1,6 +1,8 @@
 
 import os
 
+from contextlib import contextmanager
+
 from snakeoil import fileutils
 from snakeoil import osutils
 from catalyst.fileops import ensure_dirs
@@ -36,3 +38,21 @@ class LockDir(Lock):
         lockfile = os.path.join(lockdir, '.catalyst_lock')
 
         Lock.__init__(self, lockfile)
+
+@contextmanager
+def read_lock(filename):
+    lock = Lock(filename)
+    lock.read_lock()
+    try:
+        yield
+    finally:
+        lock.unlock()
+
+@contextmanager
+def write_lock(filename):
+    lock = Lock(filename)
+    lock.write_lock()
+    try:
+        yield
+    finally:
+        lock.unlock()

Reply via email to