/// <summary> /// Persist all dirty pages /// </summary> public void PersistDirtyPages() { foreach (var page in this.GetDirtyPages()) { _disk.WritePage(page); } }
/// <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()); } } }
/// <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); } }
/// <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" }); } } }
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(); } }
/// <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); } }
/// <summary> /// Write a page from memory to disk /// </summary> public void WritePage(BasePage page) { DiskService.WritePage(GetWriter(), page); }