Package gozerbot :: Module lockmanager
[hide private]
[frames] | no frames]

Source Code for Module gozerbot.lockmanager

 1  # gozerbot/lockmanager.py 
 2  # 
 3  # 
 4   
 5  """ manages locks """ 
 6   
 7  __copyright__ = 'this file is in the public domain' 
 8   
 9  from gozerbot.generic import rlog 
10  import thread 
11   
12 -class Lockmanager(object):
13 14 """ place to hold locks """ 15
16 - def __init__(self):
17 self.locks = {}
18
19 - def allocate(self, name):
20 """ allocate a new lock """ 21 name = name.lower() 22 self.locks[name] = thread.allocate_lock() 23 rlog(10, 'lockmanager', 'allocated %s' % name)
24
25 - def get(self, name):
26 """ get lock """ 27 name = name.lower() 28 if not self.locks.has_key(name): 29 self.allocate(name) 30 return self.locks[name]
31
32 - def delete(self, name):
33 """ delete lock """ 34 if self.locks.has_key(name): 35 del self.locks[name]
36
37 - def acquire(self, name):
38 """ acquire lock """ 39 name = name.lower() 40 if not self.locks.has_key(name): 41 self.allocate(name) 42 rlog(10, 'lockmanager', 'acquire %s' % name) 43 self.locks[name].acquire()
44
45 - def release(self, name):
46 """ release lock """ 47 name = name.lower() 48 rlog(10, 'lockmanager', 'releasing %s' % name) 49 self.locks[name].release()
50 51 lockmanager = Lockmanager() 52