~ubuntu-branches/ubuntu/precise/gozerbot/precise

« back to all changes in this revision

Viewing changes to build/lib/gozerbot/lockmanager.py

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Malcolm
  • Date: 2008-06-02 19:26:39 UTC
  • mfrom: (1.1.3 upstream) (3.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080602192639-3rn65nx4q1sgd6sy
Tags: 0.8.1-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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()