Change Persist Thread to a 30 Second delayed, run once on changes.
This commit is contained in:
@@ -48,8 +48,6 @@ namespace sscs.lss
|
||||
m_baGeneratedKey = baMasterPasscode;
|
||||
LoadPersistentStore();
|
||||
userStore.DumpSecretstore();
|
||||
persistThread = new Thread(new ThreadStart(PersistStoreThreadFn));
|
||||
persistThread.Start();
|
||||
}
|
||||
~LocalStorage()
|
||||
{
|
||||
@@ -68,22 +66,29 @@ namespace sscs.lss
|
||||
m_baGeneratedKey = baMasterPasscode;
|
||||
LoadPersistentStore();
|
||||
userStore.DumpSecretstore();
|
||||
persistThread = new Thread(new ThreadStart(PersistStoreThreadFn));
|
||||
persistThread.Start();
|
||||
}
|
||||
|
||||
public void StorePersistentData(string sDataID, byte[] baData)
|
||||
private void StorePersistentData(string sDataID, byte[] baData)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public byte[] RetrievePersistentData(string sDataID)
|
||||
private byte[] RetrievePersistentData(string sDataID)
|
||||
{
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void PersistStoreWithDelay()
|
||||
{
|
||||
if (persistThread == null)
|
||||
{
|
||||
persistThread = new Thread(new ThreadStart(PersistStoreDelayThreadFn));
|
||||
persistThread.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public bool StopPersistence()
|
||||
{
|
||||
if(persistThread != null)
|
||||
@@ -246,6 +251,13 @@ namespace sscs.lss
|
||||
return true;
|
||||
}
|
||||
|
||||
private void PersistStoreDelayThreadFn()
|
||||
{
|
||||
Thread.Sleep(30000);
|
||||
PersistStore();
|
||||
persistThread = null;
|
||||
}
|
||||
|
||||
private void PersistStoreThreadFn()
|
||||
{
|
||||
while(true)
|
||||
@@ -264,12 +276,6 @@ namespace sscs.lss
|
||||
// userStore.DumpSecretstore();
|
||||
try
|
||||
{
|
||||
string fileName = userStore.GetPersistenceFilePath();
|
||||
|
||||
if(File.Exists(fileName))
|
||||
{
|
||||
File.Delete(fileName);
|
||||
}
|
||||
|
||||
MemoryStream ms1 = new MemoryStream();
|
||||
XmlTextWriter writer = new XmlTextWriter(ms1,null);
|
||||
@@ -384,8 +390,24 @@ namespace sscs.lss
|
||||
writer.Flush();
|
||||
writer.Close();
|
||||
|
||||
byte[] key = CASACrypto.GetKeySetFromFile(CASACrypto.GetMasterPasscode(userStore.GetDesktopPasswd(),userStore.GetPasscodeByDesktopFilePath()),userStore.GetKeyFilePath());
|
||||
//byte[] key = CASACrypto.GetKeySetFromFile(CASACrypto.GetMasterPasscode(userStore.GetDesktopPasswd(),userStore.GetPasscodeByDesktopFilePath()),userStore.GetKeyFilePath());
|
||||
byte[] key = CASACrypto.GetKeySetFromFile(m_baGeneratedKey, userStore.GetKeyFilePath());
|
||||
|
||||
string fileName = userStore.GetPersistenceFilePath();
|
||||
|
||||
// rename existing file
|
||||
if(File.Exists(fileName))
|
||||
{
|
||||
File.Move(fileName, fileName+".tmp");
|
||||
}
|
||||
|
||||
CASACrypto.EncryptDataAndWriteToFile(ms1.ToArray(),key,fileName);
|
||||
|
||||
//remove temp
|
||||
if(File.Exists(fileName+".tmp"))
|
||||
{
|
||||
File.Delete(fileName+".tmp");
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user