Beispiel #1
0
 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));
     }
 }
Beispiel #2
0
 private Node GetNode(PageIndex pageIndex)
 {
     if (nodeCache.ContainsKey(pageIndex))
     {
         return(nodeCache[pageIndex]);
     }
     else
     {
         var node = pager.LoadNode(pageIndex);
         nodeCache.Add(pageIndex, node);
         return(node);
     }
 }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
 public LeafNode(PageIndex pageIndex, byte[] data) : base(pageIndex, data)
 {
 }
Beispiel #5
0
 public void AddNode(PageIndex pageIndex, NodeKey upperKey)
 {
     upperKeyValues.Add(upperKey);
     nodeIndices.Add(upperKey, pageIndex);
 }
Beispiel #6
0
 public InternalNode(PageIndex pageIndex, byte[] data) : base(pageIndex, data)
 {
 }