commit:     80a59eed95c17a8702da10f54f9b6fdf8e90a880
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul  2 21:52:53 2018 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul  7 05:22:11 2018 +0000
URL:        https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=80a59eed

gkeys/lock.py: New LockDir class

Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>

 gkeys/gkeys/lock.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gkeys/gkeys/lock.py b/gkeys/gkeys/lock.py
new file mode 100644
index 0000000..5614335
--- /dev/null
+++ b/gkeys/gkeys/lock.py
@@ -0,0 +1,31 @@
+
+import os
+
+from snakeoil import fileutils
+from snakeoil import osutils
+from catalyst.fileops import ensure_dirs
+
+
+LockInUse = osutils.LockException
+
+
+class LockDir(object):
+    """An object that creates locks inside dirs"""
+
+    def __init__(self, lockdir):
+        #self.gid = 250
+        self.lockfile = os.path.join(lockdir, '.gkeys_lock')
+        ensure_dirs(lockdir)
+        fileutils.touch(self.lockfile, mode=0o664)
+        #os.chown(self.lockfile, -1, self.gid)
+        self.lock = osutils.FsLock(self.lockfile)
+
+    def read_lock(self):
+        self.lock.acquire_read_lock()
+
+    def write_lock(self):
+        self.lock.acquire_write_lock()
+
+    def unlock(self):
+        # Releasing a write lock is the same as a read lock.
+        self.lock.release_write_lock()

Reply via email to