Esempio n. 1
0
        private void InitFsmPage(IPage page, long previousPageIndex, long nextPageIndex, long basePageIndex)
        {
            var header = new FreeSpaceMapPageHeader
            {
                StartPageIndex    = _firstFsmPageIndex,
                NextPageIndex     = nextPageIndex,
                PreviousPageIndex = previousPageIndex,
                BasePageIndex     = basePageIndex
            };

            PageFormatter.InitPage(page, header);
            PageFormatter.SetAllFsmValues(page, FsmValue.Full);
        }
Esempio n. 2
0
        public void FsmPage()
        {
            int pageSize         = 32768;
            var dummyPageManager = new FileSystemPageManager(pageSize);
            var p = new Page(dummyPageManager, 0, new byte[pageSize]);

            var fsmh = new FreeSpaceMapPageHeader();
            var r    = new Random();

            PageFormatter.InitPage(p, fsmh);
            int fsmEntryCount = PageFormatter.GetFsmEntryCount(p);

            // set all values to "full"
            PageFormatter.SetAllFsmValues(p, FsmValue.Full);

            // check if all values are actually "full"
            for (int i = 0; i < fsmEntryCount; i++)
            {
                Assert.AreEqual(FsmValue.Full, PageFormatter.GetFsmValue(p, i));
            }

            var values = new FsmValue[fsmEntryCount];

            // set and keep random values
            for (int i = 0; i < fsmEntryCount; i++)
            {
                var value = (byte)r.Next((byte)FsmValue.Full + 1);
                PageFormatter.SetFsmValue(p, i, (FsmValue)value);
                values[i] = (FsmValue)value;
            }

            // compare it
            for (int i = 0; i < fsmEntryCount; i++)
            {
                Assert.AreEqual(values[i], PageFormatter.GetFsmValue(p, i));
            }
        }
Esempio n. 3
0
        protected virtual void Init()
        {
            // add header page
            IPage headingPage = PageManager.CreatePage();

            Debug.Assert(headingPage.Index == 0, "The header page should have zero index");

            var hph = new HeadingPageHeader
            {
                FsmPageIndex          = 1,
                AccessMethodPageIndex = 2,
                PageSize = PageManager.PageSize,
                OnDiskStructureVersion = OnDiskStructureVersion,
                AccessMethod           = (short)AccessMethod
            };

            PageFormatter.InitPage(headingPage, hph);
            PageManager.UpdatePage(headingPage);

            // add the first free-space-map page
            IPage fsmPage = PageManager.CreatePage();

            Debug.Assert(fsmPage.Index == 1, "The first free-space-map page should have index 1");

            var fsmh = new FreeSpaceMapPageHeader
            {
                StartPageIndex    = fsmPage.Index,
                PreviousPageIndex = -1,
                NextPageIndex     = -1,
                BasePageIndex     = 0
            };

            PageFormatter.InitPage(fsmPage, fsmh);
            PageFormatter.SetAllFsmValues(fsmPage, FsmValue.Full);
            PageManager.UpdatePage(fsmPage);
        }