Beispiel #1
0
        //CONSTRUCTOR
        public OldAllocationStrategies(List <int> l, String s)
        {
            ToolbarItem info = new ToolbarItem();

            info.Text = App._sHelpInfoHint;
            this.ToolbarItems.Add(info);
            info.Clicked += B_Info_Clicked;

            fragmentList       = l;
            strategy           = s;
            memoryRequestState = MyEnum.noRequestYet;

            Title = "Allocation Strategies: " + strategy;

            isContentCreated = false;

            if (Application.Current.MainPage.Width > Application.Current.MainPage.Height)
            {
                this.isContentCreated = true;
                CreateContent();
                this.Content.IsVisible = true;
            }
            else
            {
                CreateContent();
                this.isContentCreated  = true;
                this.Content.IsVisible = false;
            }

            //EVENT LISTENER
            //subscribe to Message in order to know if a new memory request was made
            MessagingCenter.Subscribe <OldAllocationStrategiesModal>(this, "new memory request", (args) => {
                l_Size.Text = memoryRequest.ToString();
                l_Diff.Text = diff;
                l_Free.Text = free;
                if (OldAllocationStrategiesScene.CheckIfFull())
                {
                    memoryRequestState = MyEnum.memoryFull;
                }
                else
                {
                    memoryRequestState = MyEnum.newRequest;
                }
            });
        }
Beispiel #2
0
        /**********************************************************************
         *********************************************************************/
        //sets up the scene
        void HandleViewCreated(object sender, EventArgs e)
        {
            OldAllocationStrategiesScene gameScene;

            var gameView = sender as CCGameView;

            if (gameView != null)
            {
                // This sets the game "world" resolution to 330x100:
                //Attention: all drawn elements in the scene strongly depend ont he resolution! Better don't change it
                gameView.DesignResolution = new CCSizeI(gameviewWidth, gameviewHeight);

                // GameScene is the root of the CocosSharp rendering hierarchy:
                gameScene = new OldAllocationStrategiesScene(gameView);

                // Starts CocosSharp:
                gameView.RunWithScene(gameScene);
            }
        }
Beispiel #3
0
        /**********************************************************************
         *********************************************************************/
        async void B_Next_Clicked(object sender, EventArgs e)
        {
            switch (memoryRequestState)
            {
            case MyEnum.newRequest:     //new request
                memoryRequestState = MyEnum.searchingForBlock;
                OldAllocationStrategiesScene.RequestNew(memoryRequest);
                break;

            case MyEnum.searchingForBlock:     //searching for block
                switch (strategy)
                {
                case "First Fit":
                    OldAllocationStrategiesScene.pos++;
                    OldAllocationStrategiesScene.FirstFit(memoryRequest);
                    break;

                case "Next Fit":
                    OldAllocationStrategiesScene.pos++;
                    OldAllocationStrategiesScene.NextFit(memoryRequest);
                    break;

                case "Best Fit":
                    OldAllocationStrategiesScene.pos++;
                    OldAllocationStrategiesScene.BestFit(memoryRequest);
                    break;

                case "Worst Fit":
                    OldAllocationStrategiesScene.pos++;
                    OldAllocationStrategiesScene.WorstFit(memoryRequest);
                    break;

                case "Tailoring Best Fit":
                    OldAllocationStrategiesScene.pos++;
                    OldAllocationStrategiesScene.TailoringBestFit(memoryRequest);
                    break;

                case "Combined Fit":
                    OldAllocationStrategiesScene.pos++;
// Debug.WriteLine("next clicked pos = " + OldAllocationStrategiesScene.pos);
                    OldAllocationStrategiesScene.CombinedFit(memoryRequest);
                    break;
                }
                break;

            case MyEnum.successfull:     //successfull
                OldAllocationStrategiesScene.ClearRedArrow();
                OldAllocationStrategiesScene.ClearGrayArrow();
                OldAllocationStrategiesScene.DrawFill();
                memoryRequestState  = MyEnum.noRequestYet;
                b_Restart.IsEnabled = true;

                //clear information bar
                l_Size.Text = size;
                l_Diff.Text = diff;
                l_Best.Text = best;
                l_Free.Text = free;

                break;

            case MyEnum.unsuccessfull:     //unsucessfull
                OldAllocationStrategiesScene.ClearGrayArrow();
                OldAllocationStrategiesScene.ClearRedArrow();
                await DisplayAlert("Alert", "No free space has been found", "OK");

                memoryRequestState = MyEnum.noRequestYet;                         //ready for a new request

                //clear information bar
                l_Size.Text = size;
                l_Diff.Text = diff;
                l_Best.Text = best;
                l_Free.Text = free;

                break;

            case MyEnum.noRequestYet:     //no requst yet

                if (OldAllocationStrategiesScene.CheckIfFull())
                {
                    memoryRequestState = MyEnum.memoryFull;
                    await DisplayAlert("Alert", "Out of memory! The app will close now", "OK");

                    await Navigation.PopAsync();

                    break;
                }
                else
                {
                    await Navigation.PushModalAsync(new OldAllocationStrategiesModal(), true);

                    break;
                }

            case MyEnum.memoryFull:     //memory is full
                await DisplayAlert("Alert", "Out of memory! The app will close now", "OK");

                await Navigation.PopAsync();

                break;
            }
        }