public Node LoadNode(PageIndex pageIndex) { using (var stream = dbFile.CreateViewStream((int)pageIndex * Constants.PageSize, Constants.PageSize)) { var reader = new BinaryReader(stream); var data = reader.ReadBytes(Constants.PageSize); return(NodeFactory.DeserilizeNode(pageIndex, data)); } }
private Node GetNode(PageIndex pageIndex) { if (nodeCache.ContainsKey(pageIndex)) { return(nodeCache[pageIndex]); } else { var node = pager.LoadNode(pageIndex); nodeCache.Add(pageIndex, node); return(node); } }
public static void Test01() { using (var dbFile = MemoryMappedFile.CreateNew("Db", Constants.DbMaxSize)) { Pager.Init(dbFile); var pager = Pager.Get(); var indices = new PageIndex[] { pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex(), pager.NewNodeIndex() }; var node = new LeafNode(indices[2], data); pager.SaveNode(node); var emptyNode = pager.LoadNode(1); var populatedNode = pager.LoadNode(2); } }
public LeafNode(PageIndex pageIndex, byte[] data) : base(pageIndex, data) { }
public void AddNode(PageIndex pageIndex, NodeKey upperKey) { upperKeyValues.Add(upperKey); nodeIndices.Add(upperKey, pageIndex); }
public InternalNode(PageIndex pageIndex, byte[] data) : base(pageIndex, data) { }