X-Git-Url: http://dolda2000.com/gitweb/?p=didex.git;a=blobdiff_plain;f=didex%2Fstore.py;h=450a9fe02def89bfeee0c5b34baab96f14199bba;hp=15d2eca11beab793506299b83fbe93eabff9adc9;hb=eca9b3be30f697c14e43e1ad717bf29ca13c6408;hpb=abb94f836b21e1fe76e83675dd09b4236a689a45 diff --git a/didex/store.py b/didex/store.py index 15d2eca..450a9fe 100644 --- a/didex/store.py +++ b/didex/store.py @@ -3,15 +3,23 @@ from . import db, index, cache from .db import txnfun class environment(object): - def __init__(self, path): - self.path = path + def __init__(self, *, path=None, getpath=None, recover=False): + if path is not None: + self.path = path + self.getpath = None + else: + self.path = None + self.getpath = getpath + self.recover = recover self.lk = threading.Lock() self.bk = None def __call__(self): with self.lk: if self.bk is None: - self.bk = db.environment(self.path) + if self.path is None: + self.path = self.getpath() + self.bk = db.environment(self.path, recover=self.recover) return self.bk def close(self): @@ -41,7 +49,7 @@ class store(object): if env: self.env = env else: - self.env = environment(path) + self.env = environment(path=path) self._db = None if ncache is None: ncache = cache.cache()