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); }
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)); } }
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); }