/// <summary>
/// Saves the messages to persistent storage. This method only performs the
/// save if new messages have been added or one of the messages changed.
/// </summary>
internal void Save()
{
// only store if at least one messages stored state is dirty
if (this.m_dirtyStored)
{
try
{
#if UNITY_WEBPLAYER
MemoryStream stream = new MemoryStream();
#else
string fileName = Application.persistentDataPath + "/" + IQUMessageQueue.FileName;
FileStream stream = new FileStream(fileName, FileMode.Create);
#endif
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(IQUMessageQueue.FileVersion);
int count = this.GetCount();
writer.Write(count);
for (IQUMessage message = this.m_first; message != null; message = message.Next)
{
message.Save(writer);
}
writer.Flush();
#if UNITY_WEBPLAYER
IQUSDK.Instance.LocalStorage.SetBytes(IQUMessageQueue.FileName, stream.GetBuffer());
#endif
stream.Close();
IQUSDK.Instance.AddLog("[Queue] saved " + count + " messages.");
}
catch (Exception error)
{
IQUSDK.Instance.AddLog("[Queue][Error] while saving: " + error.Message);
}
this.m_dirtyStored = false;
}
}