/// <summary> /// Read new DataBlock from filled page segment /// </summary> public DataBlock(DataPage page, byte index, BufferSlice segment) { _page = page; _segment = segment; this.Position = new PageAddress(page.PageID, index); // byte 00: Extend this.Extend = segment.ReadBool(P_EXTEND); // byte 01-05: NextBlock (PageID, Index) this.NextBlock = segment.ReadPageAddress(P_NEXT_BLOCK); // byte 06-EOL: Buffer this.Buffer = segment.Slice(P_BUFFER, segment.Count - P_BUFFER); }
/// <summary> /// Create new DataBlock and fill into buffer /// </summary> public DataBlock(DataPage page, byte index, BufferSlice segment, bool extend, PageAddress nextBlock) { _page = page; _segment = segment; this.Position = new PageAddress(page.PageID, index); this.NextBlock = nextBlock; this.Extend = extend; // byte 00: Data Index segment.Write(extend, P_EXTEND); // byte 01-05 (can be updated in "UpdateNextBlock") segment.Write(nextBlock, P_NEXT_BLOCK); // byte 06-EOL: Buffer this.Buffer = segment.Slice(P_BUFFER, segment.Count - P_BUFFER); page.IsDirty = true; }