Change Persist Thread to a 30 Second delayed, run once on changes.

This commit is contained in:
Jim Norman
2005-10-27 19:24:13 +00:00
parent bb67a93ec8
commit 2483c16c08
7 changed files with 55 additions and 16 deletions

View File

@@ -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)
{