public static RadixTreePageBackingObject FromPage(IPage page) { var result = new RadixTreePageBackingObject(page.Index); var items = PageFormatter.ReadVariableSizeItems(page); foreach (var item in items) { result.Items.Add(item); } return(result); }
private void CheckRoot() { if (_rootNodeReference == null) { var headerPage = _pageManager.FetchPage(0); _rootPageIndex = ((HeadingPageHeader)PageFormatter.GetPageHeader(headerPage)).AccessMethodPageIndex; var page = _pageManager.FetchPage(_rootPageIndex); var items = PageFormatter.ReadVariableSizeItems(page); if (items.Any()) { // root page already has an item _rootNodeReference = new DbItemReference(_rootPageIndex, 0); } else { var node = new RadixTreeNode(256); PageFormatter.AddVariableSizeItem(page, GetNodeBytes(node, GetNodeSize(0, 256))); _rootNodeReference = new DbItemReference(_rootPageIndex, 0); _pageManager.UpdatePage(page); } } }