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()