private void RetrieveSessionStorage()
{
string sessionString = null;
#if PCL
IFolder rootFolder = FileSystem.Current.LocalStorage;
if (ExistenceCheckResult.FileExists == rootFolder.CheckExistsAsync(_sessionStorageFileFullPath).Result)
{
IFile file = rootFolder.GetFileAsync(_sessionStorageFileFullPath).Result;
sessionString = file.ReadAllTextAsync().Result;
}
#elif BCL
if (File.Exists(_sessionStorageFileFullPath))
{
using (var sessionFile = new System.IO.StreamReader(_sessionStorageFileFullPath))
{
sessionString = sessionFile.ReadToEnd();
sessionFile.Close();
}
_logger.DebugFormat("Mobile Analytics retrieves session info: {0}", sessionString);
}
else
{
_logger.DebugFormat("Mobile Analytics session file does not exist.");
}
#elif UNITY
Action action = () =>
{
if (File.Exists(_sessionStorageFileFullPath))
{
System.IO.StreamReader sessionFile = new System.IO.StreamReader(_sessionStorageFileFullPath);
sessionString = sessionFile.ReadToEnd();
sessionFile.Close();
_logger.DebugFormat("Mobile Analytics retrieves session info: {0}", sessionString);
}
else
{
_logger.DebugFormat("Mobile Analytics session file does not exist.");
}
};
if (UnityInitializer.IsMainThread())
{
action();
}
else
{
ManualResetEvent e = new ManualResetEvent(false);
UnityRequestQueue.Instance.ExecuteOnMainThread(() =>
{
action();
e.Set();
});
e.WaitOne();
}
#endif
if (!string.IsNullOrEmpty(sessionString))
{
_sessionStorage = JsonMapper.ToObject<SessionStorage>(sessionString);
}
}