protected override void ReadContent(ByteReader reader) { this.Nodes = new Dictionary<ushort, IndexNode>(this.ItemCount); for (var i = 0; i < this.ItemCount; i++) { var index = reader.ReadUInt16(); var levels = reader.ReadByte(); var node = new IndexNode(levels); node.Page = this; node.Position = new PageAddress(this.PageID, index); node.KeyLength = reader.ReadUInt16(); node.Key = reader.ReadBsonValue(node.KeyLength); node.DataBlock = reader.ReadPageAddress(); for (var j = 0; j < node.Prev.Length; j++) { node.Prev[j] = reader.ReadPageAddress(); node.Next[j] = reader.ReadPageAddress(); } this.Nodes.Add(node.Position.Index, node); } }
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()); } // use last page byte position for recovery mode only because i forgot to reserve area before collection names! // TODO: fix this in next change data structure reader.Position = BasePage.PAGE_SIZE - 1; this.Recovery = reader.ReadBoolean(); }
protected override void ReadContent(ByteReader reader) { this.Nodes = new Dictionary <ushort, IndexNode>(this.ItemCount); for (var i = 0; i < this.ItemCount; i++) { var index = reader.ReadUInt16(); var levels = reader.ReadByte(); var node = new IndexNode(levels); node.Page = this; node.Position = new PageAddress(this.PageID, index); node.Slot = reader.ReadByte(); node.PrevNode = reader.ReadPageAddress(); node.NextNode = reader.ReadPageAddress(); node.KeyLength = reader.ReadUInt16(); node.Key = reader.ReadBsonValue(node.KeyLength); node.DataBlock = reader.ReadPageAddress(); for (var j = 0; j < node.Prev.Length; j++) { node.Prev[j] = reader.ReadPageAddress(); node.Next[j] = reader.ReadPageAddress(); } this.Nodes.Add(node.Position.Index, node); } }
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); } reader.ReadUInt16(); // to be compatible with old "ChangeID" 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()); } }
private void ReadHeader(ByteReader reader) { // first 5 bytes (pageID + pageType) was readed before class create // this.PageID // this.PageType PrevPageID = reader.ReadUInt32(); NextPageID = reader.ReadUInt32(); ItemCount = reader.ReadUInt16(); FreeBytes = reader.ReadUInt16(); reader.Skip(8); // reserved 8 bytes }
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); } ChangeID = reader.ReadUInt16(); FreeEmptyPageID = reader.ReadUInt32(); LastPageID = reader.ReadUInt32(); DbParams.Read(reader); // read page collections references (position on end of page) var cols = reader.ReadByte(); for (var i = 0; i < cols; i++) { CollectionPages.Add(reader.ReadString(), reader.ReadUInt32()); } }
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); } }
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(); this.DbParams.Read(reader); // 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()); } }
public void Read(ByteReader reader) { this.DbVersion = reader.ReadUInt16(); reader.Skip(198); }
public void Read(ByteReader reader) { this.DbVersion = reader.ReadUInt16(); reader.Skip(198); }