summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-12-07 11:29:12 +0000
committerLars Wirzenius <liw@liw.fi>2010-12-07 11:29:12 +0000
commit53da02102f72ed4f7237ba31827d044d6bb5aa69 (patch)
treeffc03639693004a8b5a69da3cd73e8b275f51dda
parent11cccf26ec2ee9b2a3c0ee7fd48405f569d5196c (diff)
downloadobnam-53da02102f72ed4f7237ba31827d044d6bb5aa69.tar.gz
Change ClientList to use new StoreTree stuff.
-rw-r--r--obnamlib/clientlist.py33
-rw-r--r--obnamlib/store_tree.py4
2 files changed, 17 insertions, 20 deletions
diff --git a/obnamlib/clientlist.py b/obnamlib/clientlist.py
index e67c9220..19e9316c 100644
--- a/obnamlib/clientlist.py
+++ b/obnamlib/clientlist.py
@@ -62,9 +62,10 @@ class ClientList(obnamlib.StoreTree):
return random.randint(0, obnamlib.MAX_ID)
def list_clients(self):
- if self.init_forest() and self.forest.trees:
- t = self.forest.trees[-1]
- return [v for k, v in t.lookup_range(self.minkey, self.maxkey)]
+ if self.init_forest() and self.tree:
+ return [v
+ for k, v in
+ self.tree.lookup_range(self.minkey, self.maxkey)]
else:
return []
@@ -80,31 +81,23 @@ class ClientList(obnamlib.StoreTree):
def get_client_id(self, client_name):
if not self.init_forest() or not self.forest.trees:
return None
- t = self.forest.trees[-1]
- return self.find_client_id(t, client_name)
+ return self.find_client_id(self.tree, client_name)
def add_client(self, client_name):
- self.require_forest()
- if not self.forest.trees:
- t = self.forest.new_tree()
- else:
- t = self.forest.new_tree(old=self.forest.trees[-1])
-
- if self.find_client_id(t, client_name) is None:
+ self.start_changes()
+ if self.find_client_id(self.tree, client_name) is None:
while True:
candidate_id = self.random_id()
key = self.key(client_name, candidate_id)
try:
- t.lookup(key)
+ self.tree.lookup(key)
except KeyError:
break
- t.insert(self.key(client_name, candidate_id), client_name)
+ self.tree.insert(self.key(client_name, candidate_id), client_name)
def remove_client(self, client_name):
- self.require_forest()
- if self.forest.trees:
- t = self.forest.new_tree(old=self.forest.trees[-1])
- client_id = self.find_client_id(t, client_name)
- if client_id is not None:
- t.remove(self.key(client_name, client_id))
+ self.start_changes()
+ client_id = self.find_client_id(self.tree, client_name)
+ if client_id is not None:
+ self.tree.remove(self.key(client_name, client_id))
diff --git a/obnamlib/store_tree.py b/obnamlib/store_tree.py
index 76e86ce4..9ebb583d 100644
--- a/obnamlib/store_tree.py
+++ b/obnamlib/store_tree.py
@@ -44,6 +44,10 @@ class StoreTree(object):
self.dirname, self.node_size, codec,
self.upload_queue_size, self.lru_size)
self.forest = btree.Forest(ns)
+ if self.forest.trees:
+ self.tree = self.forest.trees[-1]
+ else:
+ self.tree = None
return True
def require_forest(self):