Esempio n. 1
0
        /// <summary>
        /// Sets an allocation page to be displayed
        /// </summary>
        /// <param name="pageAddress">The page address.</param>
        /// <param name="databaseName">Name of the database.</param>
        /// <param name="connectionString">The connection string.</param>
        /// <param name="showHeader">if set to <c>true</c> [show header].</param>
        /// <returns></returns>
        public List <Marker> SetAllocationPage(PageAddress pageAddress, string databaseName, string connectionString, bool showHeader)
        {
            topPanel.Visible = showHeader;

            var allocationPage = new AllocationPage(connectionString, databaseName, pageAddress);

            allocationMap.Mode        = MapMode.Standard;
            allocationMap.ExtentCount = 63903;
            allocationMap.ExtentSize  = AllocationMap.Small;

            allocationMap.StartPage = allocationPage.StartPage;
            allocationMap.FileId    = allocationPage.StartPage.FileId;

            var layer = new AllocationLayer(allocationPage.PageAddress.ToString(),
                                            allocationPage,
                                            Color.Brown);

            layer.SingleSlotsOnly = false;

            allocationMap.MapLayers.Clear();
            allocationMap.MapLayers.Add(layer);

            allocationMap.Invalidate();

            if (showHeader)
            {
                SetIamInformation(allocationPage);
            }

            var markers = MarkerBuilder.BuildMarkers(allocationPage, string.Empty);

            return(markers);
        }
Esempio n. 2
0
        /// <summary>
        /// Builds the allocation chain following an interval
        /// </summary>
        /// <param name="database">The database.</param>
        /// <param name="pageAddress">The page address.</param>
        protected virtual void BuildChain(Database database, PageAddress pageAddress)
        {
            var page = new AllocationPage(database, pageAddress);

            if (page.Header.PageType == PageType.Iam)
            {
                //throw new ArgumentException();
            }

            Pages.Add(page);
            SinglePageSlots.AddRange(page.SinglePageSlots);

            interval = Database.AllocationInterval;

            var pageCount = (int)Math.Ceiling(database.FileSize(pageAddress.FileId) / (decimal)interval);

            if (pageCount > 1)
            {
                for (var i = 1; i < pageCount; i++)
                {
                    Pages.Add(new AllocationPage(database,
                                                 new PageAddress(pageAddress.FileId,
                                                                 pageAddress.PageId + (i * interval))));
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Displays the buffer pool layer.
        /// </summary>
        private void DisplayBufferPoolLayer()
        {
            bufferPool.Refresh();

            var clean = new AllocationPage();

            clean.SinglePageSlots.AddRange(bufferPool.CleanPages);

            var bufferPoolLayer = new AllocationLayer("Buffer Pool", clean, Color.Black)
            {
                SingleSlotsOnly            = true,
                Transparency               = 80,
                Transparent                = true,
                BorderColour               = Color.WhiteSmoke,
                UseBorderColour            = true,
                UseDefaultSinglePageColour = false
            };

            var dirty = new AllocationPage();

            dirty.SinglePageSlots.AddRange(bufferPool.DirtyPages);

            var bufferPoolDirtyLayer = new AllocationLayer("Buffer Pool (Dirty)", dirty, Color.IndianRed)
            {
                SingleSlotsOnly            = true,
                Transparent                = false,
                BorderColour               = Color.WhiteSmoke,
                UseBorderColour            = true,
                UseDefaultSinglePageColour = false,
                LayerType = AllocationLayerType.TopLeftCorner
            };

            allocationContainer.AddMapLayer(bufferPoolLayer);
            allocationContainer.AddMapLayer(bufferPoolDirtyLayer);
        }
Esempio n. 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Allocation"/> class.
 /// </summary>
 /// <param name="page">The page.</param>
 public Allocation(AllocationPage page)
 {
     FileId    = page.PageAddress.FileId;
     MultiFile = false;
     Pages.Add(page);
     interval = Database.AllocationInterval;
     SinglePageSlots.AddRange(page.SinglePageSlots);
 }
Esempio n. 5
0
        /// <summary>
        /// Builds an allocation chain based on linkage through the headers.
        /// </summary>
        /// <param name="database"></param>
        /// <param name="pageAddress"></param>
        protected new void BuildChain(Database database, PageAddress pageAddress)
        {
            var page = new AllocationPage(database, pageAddress);

            Pages.Add(page);
            SinglePageSlots.AddRange(page.SinglePageSlots);

            if (page.Header.NextPage != PageAddress.Empty)
            {
                BuildChain(database, page.Header.NextPage);
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Sets the IAM header information.
 /// </summary>
 /// <param name="page">The page.</param>
 private void SetIamInformation(AllocationPage page)
 {
     if (page.SinglePageSlots.Count == 8)
     {
         slotZeroTextBox.Text  = page.SinglePageSlots[0].ToString();
         slotOneTextBox.Text   = page.SinglePageSlots[1].ToString();
         slotTwoTextBox.Text   = page.SinglePageSlots[2].ToString();
         slotThreeTextBox.Text = page.SinglePageSlots[3].ToString();
         slotFourTextBox.Text  = page.SinglePageSlots[4].ToString();
         slotFiveTextBox.Text  = page.SinglePageSlots[5].ToString();
         slotSixTextBox.Text   = page.SinglePageSlots[6].ToString();
         slotSevenTextBox.Text = page.SinglePageSlots[7].ToString();
         startPageTextBox.Text = page.StartPage.ToString();
     }
 }
Esempio n. 7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AllocationLayer"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="page">The page.</param>
        /// <param name="colour">The colour of the layer.</param>
        public AllocationLayer(string name, AllocationPage page, Color colour)
        {
            this.name = name;

            if (page.Header.PageType == PageType.Iam)
            {
                allocations.Add(new IamAllocation(page));
            }
            else
            {
                allocations.Add(new Allocation(page));
            }

            this.colour = colour;
        }
Esempio n. 8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="IamAllocation"/> class.
 /// </summary>
 /// <param name="page">The page.</param>
 public IamAllocation(AllocationPage page)
     : base(page)
 {
     MultiFile = true;
 }