Exemple #1
0
 internal Segment <byte> this[Hid hid]
 {
     get
     {
         var page = _pages[hid.BlockIndex];
         return(page[hid.Index - 1]);
     }
 }
Exemple #2
0
        private void ProcessHeader()
        {
            var header = Heap[_headerHid];

            Validate.Match(header[0], 0xb5, "Invalid type");
            _keySize     = header[1];
            _valueSize   = header[2];
            _elementSize = _keySize + _valueSize;
            _indexLevels = header[3];
            _rootHid     = header.ToUInt32(4);
        }
Exemple #3
0
 internal BTree(
     Heap heap,
     Hid headerHid,
     Func <Segment <byte>, TKey> keyFactory,
     Func <Segment <byte>, T> valueFactory)
 {
     Heap          = heap;
     _headerHid    = headerHid;
     _keyFactory   = keyFactory;
     _valueFactory = valueFactory;
     ProcessHeader();
 }
Exemple #4
0
        private void Initialize()
        {
            var block = _reader.FindBlock(_node.DataBid);

            if (_node.DataBid.Type == BlockType.Internal)
            {
                BuildDataTreePages(block);
                ClientSignature = _pages[0].Data[3];
                UserRoot        = _pages[0].Data.Derive(4, 4).ToUInt32();
            }
            else
            {
                _pages.Add(new HeapPage(block.Data));
                ClientSignature = block.Data[3];
                UserRoot        = block.Data.Segment(4, 4).ToUInt32();
            }
        }