Beispiel #1
0
 /// <summary>
 /// Persist all dirty pages
 /// </summary>
 public void PersistDirtyPages()
 {
     foreach (var page in this.GetDirtyPages())
     {
         _disk.WritePage(page);
     }
 }
Beispiel #2
0
 /// <summary>
 /// Create a empty database ready to be used using connectionString as parameters
 /// </summary>
 public static void CreateNewDatafile(ConnectionString connectionString)
 {
     using (var stream = File.Create(connectionString.Filename))
     {
         using (var writer = new BinaryWriter(stream))
         {
             DiskService.WritePage(writer, new HeaderPage());
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// Persist all dirty pages
        /// </summary>
        public void PersistDirtyPages()
        {
            // alocate datafile file first (only when file need to grow)
            _disk.AllocateDiskSpace((this.Header.LastPageID + 1) * BasePage.PAGE_SIZE);

            foreach (var page in this.GetDirtyPages())
            {
                _disk.WritePage(page);
            }
        }
Beispiel #4
0
 /// <summary>
 /// Create a empty database ready to be used using connectionString as parameters
 /// </summary>
 private static void CreateNewDatabase(ConnectionString connectionString)
 {
     using (var stream = File.Create(connectionString.Filename))
     {
         using (var writer = new BinaryWriter(stream))
         {
             // creating header + master collection
             DiskService.WritePage(writer, new HeaderPage {
                 PageID = 0, LastPageID = 1
             });
             DiskService.WritePage(writer, new CollectionPage {
                 PageID = 1, CollectionName = "_master"
             });
         }
     }
 }
Beispiel #5
0
        private void DoRecovery(BinaryReader reader)
        {
            // open disk service
            using (var disk = new DiskService(_connectionString))
            {
                disk.Lock();

                // while pages, read from redo, write on disk
                while (reader.BaseStream.Position != reader.BaseStream.Length)
                {
                    var page = this.ReadPageJournal(reader);

                    disk.WritePage(page);
                }

                reader.Close();

                disk.UnLock();
            }
        }
Beispiel #6
0
        /// <summary>
        /// Create a empty database ready to be used using connectionString as parameters
        /// </summary>
        private static void CreateNewDatabase(ConnectionString connectionString)
        {
            using (var stream = File.Create(connectionString.Filename))
            {
                using (var writer = new BinaryWriter(stream))
                {
                    // creating header + master collection
                    DiskService.WritePage(writer, new HeaderPage {
                        PageID = 0, LastPageID = 1
                    });
                    DiskService.WritePage(writer, new CollectionPage {
                        PageID = 1, CollectionName = "_master"
                    });
                }
            }

            // create _id index on _master collection
            using (var db = new LiteEngine("filename=" + connectionString.Filename + ";journal=false"))
            {
                db.GetCollection("_master").EnsureIndex("_id", true);
            }
        }
Beispiel #7
0
 /// <summary>
 /// Write a page from memory to disk
 /// </summary>
 public void WritePage(BasePage page)
 {
     DiskService.WritePage(GetWriter(), page);
 }