Exemple #1
0
        private BinaryData EncodeBlock(
            ExternalDataBlockForHeapOnNode block)
        {
            var hnPageHeader = new HNPAGEHDR(block.RawByteCountWithoutPageMapWithPadding);


            return(EncodeBlock(block, pageHeaderEncoder.Encode(hnPageHeader)));
        }
Exemple #2
0
        private BinaryData EncodeBlockWithNewFillLevel(
            ExternalDataBlockForHeapOnNode block,
            BinaryData fillLevelsForTheNext128Blocks)
        {
            var hnBitmapHeader =
                new HNBITMAPHDR(
                    block.RawByteCountWithoutPageMapWithPadding,
                    fillLevelsForTheNext128Blocks);

            return(EncodeBlock(block, bitmapHeaderEncoder.Encode(hnBitmapHeader)));
        }
Exemple #3
0
        private BinaryData EncodeFirstBlock(
            ExternalDataBlockForHeapOnNode block,
            HID userRoot,
            BinaryData fillLevelsForTheFirst8Blocks,
            int clientSignature)
        {
            var hnHDR =
                new HNHDR(
                    block.RawByteCountWithoutPageMapWithPadding,
                    0xEC,
                    clientSignature,
                    userRoot,
                    fillLevelsForTheFirst8Blocks);

            return(EncodeBlock(block, headerEncoder.Encode(hnHDR)));
        }
Exemple #4
0
        private BinaryData EncodeBlock(
            ExternalDataBlockForHeapOnNode block,
            BinaryData encodedHeader)
        {
            var pageMap =
                new HNPAGEMAP(
                    block.NumberOfItems + 1,
                    0,
                    CreateAllocationTable(block.Items, block.HeaderSize));

            return
                (BinaryDataGenerator
                 .New()
                 .Append(encodedHeader)
                 .Append(block.Items)
                 .FillTo(block.RawByteCountWithoutPageMapWithPadding)
                 .Append(pageMap, pageMapEncoder)
                 .GetData());
        }