Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(618)

Side by Side Diff: third_party/tlslite/tlslite/BaseDB.py

Issue 211173006: Perform tlslite 0.3.8 -> 0.4.6 renames ahead of time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Drop the -B Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/tlslite/README.chromium ('k') | third_party/tlslite/tlslite/Checker.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 """Base class for SharedKeyDB and VerifierDB."""
2
3 import anydbm
4 import thread
5
6 class BaseDB:
7 def __init__(self, filename, type):
8 self.type = type
9 self.filename = filename
10 if self.filename:
11 self.db = None
12 else:
13 self.db = {}
14 self.lock = thread.allocate_lock()
15
16 def create(self):
17 """Create a new on-disk database.
18
19 @raise anydbm.error: If there's a problem creating the database.
20 """
21 if self.filename:
22 self.db = anydbm.open(self.filename, "n") #raises anydbm.error
23 self.db["--Reserved--type"] = self.type
24 self.db.sync()
25 else:
26 self.db = {}
27
28 def open(self):
29 """Open a pre-existing on-disk database.
30
31 @raise anydbm.error: If there's a problem opening the database.
32 @raise ValueError: If the database is not of the right type.
33 """
34 if not self.filename:
35 raise ValueError("Can only open on-disk databases")
36 self.db = anydbm.open(self.filename, "w") #raises anydbm.error
37 try:
38 if self.db["--Reserved--type"] != self.type:
39 raise ValueError("Not a %s database" % self.type)
40 except KeyError:
41 raise ValueError("Not a recognized database")
42
43 def __getitem__(self, username):
44 if self.db == None:
45 raise AssertionError("DB not open")
46
47 self.lock.acquire()
48 try:
49 valueStr = self.db[username]
50 finally:
51 self.lock.release()
52
53 return self._getItem(username, valueStr)
54
55 def __setitem__(self, username, value):
56 if self.db == None:
57 raise AssertionError("DB not open")
58
59 valueStr = self._setItem(username, value)
60
61 self.lock.acquire()
62 try:
63 self.db[username] = valueStr
64 if self.filename:
65 self.db.sync()
66 finally:
67 self.lock.release()
68
69 def __delitem__(self, username):
70 if self.db == None:
71 raise AssertionError("DB not open")
72
73 self.lock.acquire()
74 try:
75 del(self.db[username])
76 if self.filename:
77 self.db.sync()
78 finally:
79 self.lock.release()
80
81 def __contains__(self, username):
82 """Check if the database contains the specified username.
83
84 @type username: str
85 @param username: The username to check for.
86
87 @rtype: bool
88 @return: True if the database contains the username, False
89 otherwise.
90
91 """
92 if self.db == None:
93 raise AssertionError("DB not open")
94
95 self.lock.acquire()
96 try:
97 return self.db.has_key(username)
98 finally:
99 self.lock.release()
100
101 def check(self, username, param):
102 value = self.__getitem__(username)
103 return self._checkItem(value, username, param)
104
105 def keys(self):
106 """Return a list of usernames in the database.
107
108 @rtype: list
109 @return: The usernames in the database.
110 """
111 if self.db == None:
112 raise AssertionError("DB not open")
113
114 self.lock.acquire()
115 try:
116 usernames = self.db.keys()
117 finally:
118 self.lock.release()
119 usernames = [u for u in usernames if not u.startswith("--Reserved--")]
120 return usernames
OLDNEW
« no previous file with comments | « third_party/tlslite/README.chromium ('k') | third_party/tlslite/tlslite/Checker.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698