|
|
|
|
@ -1,5 +1,6 @@ |
|
|
|
|
from ConfigParser import ConfigParser |
|
|
|
|
import cPickle as pickle |
|
|
|
|
import base64 |
|
|
|
|
from threading import Lock |
|
|
|
|
#TODO replace ConfigParser for better performance |
|
|
|
|
|
|
|
|
|
@ -41,7 +42,8 @@ class PersistentContainer(object): |
|
|
|
|
|
|
|
|
|
def __getitem__(self, name): |
|
|
|
|
if self.cp.has_option(self.namespace,name): |
|
|
|
|
return pickle.loads(self.cp.get(self.namespace,name)) |
|
|
|
|
b64 = self.cp.get(self.namespace,name) |
|
|
|
|
return pickle.loads(base64.b64decode(b64)) |
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
def __setitem__(self, name,val): |
|
|
|
|
@ -64,7 +66,8 @@ class PersistentContainer(object): |
|
|
|
|
def _write(self): |
|
|
|
|
for k in self.trans_cache: |
|
|
|
|
val = self.trans_cache[k] |
|
|
|
|
self.cp.set(self.namespace,k,pickle.dumps(val)) |
|
|
|
|
ser = pickle.dumps(val) |
|
|
|
|
self.cp.set(self.namespace,k,base64.b64encode(ser)) |
|
|
|
|
while len(self.trans_del): |
|
|
|
|
n = self.trans_del.pop() |
|
|
|
|
self.cp.remove_option(self.namespace,n) |
|
|
|
|
|