1 |
commit: 80a59eed95c17a8702da10f54f9b6fdf8e90a880 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Jul 2 21:52:53 2018 +0000 |
4 |
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jul 7 05:22:11 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=80a59eed |
7 |
|
8 |
gkeys/lock.py: New LockDir class |
9 |
|
10 |
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org> |
11 |
|
12 |
gkeys/gkeys/lock.py | 31 +++++++++++++++++++++++++++++++ |
13 |
1 file changed, 31 insertions(+) |
14 |
|
15 |
diff --git a/gkeys/gkeys/lock.py b/gkeys/gkeys/lock.py |
16 |
new file mode 100644 |
17 |
index 0000000..5614335 |
18 |
--- /dev/null |
19 |
+++ b/gkeys/gkeys/lock.py |
20 |
@@ -0,0 +1,31 @@ |
21 |
+ |
22 |
+import os |
23 |
+ |
24 |
+from snakeoil import fileutils |
25 |
+from snakeoil import osutils |
26 |
+from catalyst.fileops import ensure_dirs |
27 |
+ |
28 |
+ |
29 |
+LockInUse = osutils.LockException |
30 |
+ |
31 |
+ |
32 |
+class LockDir(object): |
33 |
+ """An object that creates locks inside dirs""" |
34 |
+ |
35 |
+ def __init__(self, lockdir): |
36 |
+ #self.gid = 250 |
37 |
+ self.lockfile = os.path.join(lockdir, '.gkeys_lock') |
38 |
+ ensure_dirs(lockdir) |
39 |
+ fileutils.touch(self.lockfile, mode=0o664) |
40 |
+ #os.chown(self.lockfile, -1, self.gid) |
41 |
+ self.lock = osutils.FsLock(self.lockfile) |
42 |
+ |
43 |
+ def read_lock(self): |
44 |
+ self.lock.acquire_read_lock() |
45 |
+ |
46 |
+ def write_lock(self): |
47 |
+ self.lock.acquire_write_lock() |
48 |
+ |
49 |
+ def unlock(self): |
50 |
+ # Releasing a write lock is the same as a read lock. |
51 |
+ self.lock.release_write_lock() |