Ejemplo n.º 1
0
        private void Unload(FactKeyDictionary page)
        {
            page.PeristenceState = PeristenceEnum.Unloading;
            if (page.ID == 11)
            {
            }
            Log("UnLoading page" + page.ID);

            lock (page.Locker)
            {
                if (page.IsDirty)
                {
                    SaveToFS(page);
                }
                else
                {
                    page.Clear(Log);
                }
                RemoveIDFromLoadedPages(page.ID);
                page.PeristenceState = PeristenceEnum.Unloaded;
            }
        }
Ejemplo n.º 2
0
        //public object Locker = new Object();
        public void SaveToFS(FactKeyDictionary page, Boolean unload = true)
        {
            Task.Run(
                () =>
            {
                lock (page.Locker)
                {
                    var state            = page.PeristenceState;
                    page.PeristenceState = PeristenceEnum.Saving;
                    var msg = String.Format("Saveing page{0} to FS", page.ID);
                    Log(msg);
                    //Utilities.Logger.WriteLine(msg);

                    var path = GetFilePath(page.ID);
                    Utilities.FS.EnsurePath(path);
                    //Utilities.FS.WriteAllText(path, page.Content());
                    using (System.IO.StreamWriter fsw = new System.IO.StreamWriter(path, false))
                    {
                        foreach (var item in page.LookupOfIndexes)
                        {
                            fsw.WriteLine(FactKeyDictionary.Content(item));
                        }
                        page.PeristenceState = state;
                    }

                    Log(String.Format("page{0} was saved to FS", page.ID));

                    page.IsDirty = false;
                    if (unload)
                    {
                        page.Clear(Log);
                        RemoveIDFromLoadedPages(page.ID);
                        page.PeristenceState = PeristenceEnum.Unloaded;
                    }
                }
            });
        }