protected override void ReadContent(ByteReader reader) { this.CollectionName = reader.ReadString(); this.DocumentCount = reader.ReadInt64(); this.FreeDataPageID = reader.ReadUInt32(); foreach (var index in this.Indexes) { index.Field = reader.ReadString(); index.Unique = reader.ReadBoolean(); index.HeadNode = reader.ReadPageAddress(); index.TailNode = reader.ReadPageAddress(); index.FreeIndexPageID = reader.ReadUInt32(); } }
protected override void ReadContent(ByteReader reader) { this.CollectionName = reader.ReadString(); this.FreeDataPageID = reader.ReadUInt32(); this.DocumentCount = reader.ReadUInt32(); foreach (var index in this.Indexes) { index.Field = reader.ReadString(); index.HeadNode = reader.ReadPageAddress(); index.TailNode = reader.ReadPageAddress(); index.FreeIndexPageID = reader.ReadUInt32(); index.Options.Unique = reader.ReadBoolean(); index.Options.IgnoreCase = reader.ReadBoolean(); index.Options.TrimWhitespace = reader.ReadBoolean(); index.Options.EmptyStringToNull = reader.ReadBoolean(); index.Options.RemoveAccents = reader.ReadBoolean(); } }
protected override void ReadContent(ByteReader reader) { this.CollectionName = reader.ReadString(); this.DocumentCount = reader.ReadInt64(); this.FreeDataPageID = reader.ReadUInt32(); foreach (var index in this.Indexes) { var field = reader.ReadString(); var eq = field.IndexOf('='); // Use same string to avoid change file defition if (eq > 0) { index.Field = field.Substring(0, eq); index.Expression = field.Substring(eq + 1); } else { index.Field = field; index.Expression = "$." + field; } index.Unique = reader.ReadBoolean(); index.HeadNode = reader.ReadPageAddress(); index.TailNode = reader.ReadPageAddress(); index.FreeIndexPageID = reader.ReadUInt32(); } // position on page-footer (avoid file structure change) reader.Position = BasePage.PAGE_SIZE - 8 - CollectionIndex.INDEX_PER_COLLECTION; foreach (var index in this.Indexes) { var maxLevel = reader.ReadByte(); index.MaxLevel = maxLevel == 0 ? (byte)IndexNode.MAX_LEVEL_LENGTH : maxLevel; } this.Sequence = reader.ReadInt64(); }
protected override void ReadContent(ByteReader reader) { var info = reader.ReadString(HEADER_INFO.Length); var ver = reader.ReadByte(); if (info != HEADER_INFO) throw LiteException.InvalidDatabase(); if (ver != FILE_VERSION) throw LiteException.InvalidDatabaseVersion(ver); this.ChangeID = reader.ReadUInt16(); this.FreeEmptyPageID = reader.ReadUInt32(); this.LastPageID = reader.ReadUInt32(); this.UserVersion = reader.ReadUInt16(); this.Password = reader.ReadBytes(this.Password.Length); this.Salt = reader.ReadBytes(this.Salt.Length); // read page collections references (position on end of page) var cols = reader.ReadByte(); for (var i = 0; i < cols; i++) { this.CollectionPages.Add(reader.ReadString(), reader.ReadUInt32()); } }
protected override void ReadContent(ByteReader reader) { this.CollectionName = reader.ReadString(); this.FreeDataPageID = reader.ReadUInt32(); var uintCount = reader.ReadUInt32(); // read as uint (4 bytes) foreach (var index in this.Indexes) { index.Field = reader.ReadString(); index.HeadNode = reader.ReadPageAddress(); index.TailNode = reader.ReadPageAddress(); index.FreeIndexPageID = reader.ReadUInt32(); index.Options.Unique = reader.ReadBoolean(); index.Options.IgnoreCase = reader.ReadBoolean(); index.Options.TrimWhitespace = reader.ReadBoolean(); index.Options.EmptyStringToNull = reader.ReadBoolean(); index.Options.RemoveAccents = reader.ReadBoolean(); } // be compatible with v2_beta var longCount = reader.ReadInt64(); this.DocumentCount = Math.Max(uintCount, longCount); }
/// <summary> /// Read a page with correct instance page object. Checks for pageType /// </summary> public static BasePage ReadPage(byte[] buffer) { var reader = new ByteReader(buffer); var pageID = reader.ReadUInt32(); var pageType = (PageType)reader.ReadByte(); var page = CreateInstance(pageID, pageType); page.ReadHeader(reader); page.ReadContent(reader); page.DiskData = buffer; return(page); }
protected override void ReadContent(ByteReader reader) { this.DataBlocks = new Dictionary <ushort, DataBlock>(ItemCount); for (var i = 0; i < ItemCount; i++) { var block = new DataBlock(); block.Page = this; block.Position = new PageAddress(this.PageID, reader.ReadUInt16()); block.ExtendPageID = reader.ReadUInt32(); var size = reader.ReadUInt16(); block.Data = reader.ReadBytes(size); this.DataBlocks.Add(block.Position.Index, block); } }
protected override void ReadContent(ByteReader reader) { this.DataBlocks = new Dictionary<ushort, DataBlock>(ItemCount); for (var i = 0; i < ItemCount; i++) { var block = new DataBlock(); block.Page = this; block.Position = new PageAddress(this.PageID, reader.ReadUInt16()); block.ExtendPageID = reader.ReadUInt32(); var size = reader.ReadUInt16(); block.Data = reader.ReadBytes(size); this.DataBlocks.Add(block.Position.Index, block); } }
/// <summary> /// Read a page with correct instance page object. Checks for pageType /// </summary> public static BasePage ReadPage(byte[] buffer) { var reader = new ByteReader(buffer); var pageID = reader.ReadUInt32(); var pageType = (PageType)reader.ReadByte(); if (pageID == 0 && (byte)pageType > 5) { throw LiteException.InvalidDatabase(); } var page = CreateInstance(pageID, pageType); page.ReadHeader(reader); page.ReadContent(reader); page.DiskData = buffer; return(page); }
protected override void ReadContent(ByteReader reader) { DataBlocks = new Dictionary <ushort, DataBlock>(ItemCount); for (var i = 0; i < ItemCount; i++) { var block = new DataBlock(); block.Page = this; block.Position = new PageAddress(PageID, reader.ReadUInt16()); block.ExtendPageID = reader.ReadUInt32(); for (var j = 0; j < CollectionIndex.INDEX_PER_COLLECTION; j++) { block.IndexRef[j] = reader.ReadPageAddress(); } var size = reader.ReadUInt16(); block.Data = reader.ReadBytes(size); DataBlocks.Add(block.Position.Index, block); } }
protected override void ReadContent(ByteReader reader) { var info = reader.ReadString(HEADER_INFO.Length); var ver = reader.ReadByte(); if (info != HEADER_INFO) throw LiteException.InvalidDatabase(); if (ver != FILE_VERSION) throw LiteException.InvalidDatabaseVersion(ver); this.ChangeID = reader.ReadUInt16(); this.FreeEmptyPageID = reader.ReadUInt32(); this.LastPageID = reader.ReadUInt32(); reader.Skip(200); // read page collections references (position on end of page) var cols = reader.ReadByte(); for(var i = 0; i < cols; i++) { this.CollectionPages.Add(reader.ReadString(), reader.ReadUInt32()); } }