Improvements to the SQlite-based local status folder
* Do not inherit LocalStatusSQLiteFolder class from the plaintext one. * Use some functions already in BaseFolder in both, plaintext and sqlite classes. * Add a saveall method. The idea is that saveall dumps the entire messagelist to disk, while save only commits the uncommited changes. Right now, save is noop for sqlite, and equivalent to saveall for plaintext, but it enables to be more clever on when we commit to disk in the future. Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
This commit is contained in:

committed by
Eygene Ryabinkin

parent
09556d645e
commit
214137eb7b
@ -29,6 +29,7 @@ class LocalStatusFolder(BaseFolder):
|
||||
def __init__(self, name, repository):
|
||||
self.sep = '.' #needs to be set before super.__init__()
|
||||
super(LocalStatusFolder, self).__init__(name, repository)
|
||||
self.root = repository.root
|
||||
self.filename = os.path.join(self.getroot(), self.getfolderbasename())
|
||||
self.messagelist = {}
|
||||
self.savelock = threading.Lock()
|
||||
@ -47,14 +48,6 @@ class LocalStatusFolder(BaseFolder):
|
||||
def getname(self):
|
||||
return self.name
|
||||
|
||||
# Interface from BaseFolder
|
||||
def getroot(self):
|
||||
return self.repository.root
|
||||
|
||||
# Interface from BaseFolder
|
||||
def getsep(self):
|
||||
return self.sep
|
||||
|
||||
# Interface from BaseFolder
|
||||
def getfullname(self):
|
||||
return self.filename
|
||||
@ -178,6 +171,11 @@ class LocalStatusFolder(BaseFolder):
|
||||
|
||||
|
||||
def save(self):
|
||||
"""Save changed data to disk. For this backend it is the same as saveall"""
|
||||
self.saveall()
|
||||
|
||||
def saveall(self):
|
||||
"""Saves the entire messagelist to disk"""
|
||||
with self.savelock:
|
||||
file = open(self.filename + ".tmp", "wt")
|
||||
file.write((self.magicline % self.cur_version) + "\n")
|
||||
|
Reference in New Issue
Block a user