Ejemplo n.º 1
0
        /// <summary>
        /// Loads previously stored sessions from persistent storage.
        /// </summary>
        public static IEnumerable <EnvironmentSession> LoadSessions()
        {
            IList <EnvironmentSession> sessions = new List <EnvironmentSession>();

            string[] fileNames;

            try
            {
                Directory.CreateDirectory(environmentStoragePath);
                fileNames = Directory.GetFiles(environmentStoragePath, "*" + SessionExtension, SearchOption.AllDirectories);
            }
            catch (Exception ex)
            {
                fileNames = null;
                Trace.WriteLine("Unable to open directory: '" + environmentStoragePath + "'.");
                Trace.WriteLine(ex.Message);
                Trace.WriteLine(ex.StackTrace);
            }

            // load data from each session file:
            if (fileNames != null && fileNames.Length > 0)
            {
                foreach (string file in fileNames)
                {
                    try
                    {
                        EnvironmentSession session = null;

                        using (StreamReader reader = File.OpenText(file))
                        {
                            if (session == null)
                            {
                                session = new EnvironmentSession();
                            }
                            session.LoadFrom(reader, file);

                            if (session.Count > 0)
                            {
                                if (string.IsNullOrEmpty(session.Name))
                                {
                                    string name = Path.GetFileName(file);
                                    session.Name = name.Substring(0, name.Length - SessionExtension.Length);
                                }
                                sessions.Add(session);
                                session = null;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine("Unable to load session from file: '" + file + "'.");
                        Trace.WriteLine(ex.Message);
                        Trace.WriteLine(ex.StackTrace);
                    }
                }
            }

            return(sessions);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Writes given environment session variables changes into a persistent storage.
 /// </summary>
 public static void SaveSession(string fileName, EnvironmentSession session)
 {
     using (StreamWriter outputFile = new StreamWriter(
                environmentStoragePath + PrepareFileName(fileName) + SessionExtension, false, Encoding.UTF8))
     {
         session.WriteTo(outputFile);
     }
 }