Exemple #1
0
        private byte[] Serialize(IBPlusTreeNode <TKey> node)
        {
            var header = new BPlusTreeNodePageHeader
            {
                IsLeaf            = node.IsLeaf,
                NextPageIndex     = node.NextNodeIndex,
                PreviousPageIndex = node.PreviousNodeIndex,
                ParentPageIndex   = node.ParentNodeIndex,
                SizeRange         = _nodeEntrySizeRange
            };

            var page = new Page(_pageManager, node.Index, new byte[_pageManager.PageSize]);

            int cnt = node.Entries.Count;

            lock (_locker)
            {
                for (int i = 0; i < cnt; i++)
                {
                    var entry = node.Entries[i];
                    _dbItems[i].RawData = GetIndexEntryBytes(entry);
                }

                PageFormatter.FormatFixedSizeItemsPage(page, header, _dbItems.Take(cnt).ToArray());
            }

            return(page.Content);
        }