コード例 #1
0
        public SimClassErlang(trClass badana, SimGroup sWiazka, agenda listaZd, aSimulation algSym)
            : base(badana, sWiazka, listaZd, algSym)
        {
            processSym nowy = new processErlang(listaZd, this.czNowegoZgl, this);

            listaZd.DodajProces(nowy);
        }
コード例 #2
0
        public override void Obsluz()
        {
            switch (faza)
            {
            case processStage.oczekiwanie:
                processSym nowe = new processErlang(ListaZd, klasaZgl.czNowegoZgl, klasaZgl);
                ListaZd.DodajProces(nowe);
                //Zgłoszenie trafia do systemu
                if (klasaZgl.sWiazka.DodajZgl(this, ListaZd.zapStatystyk))         //próba zajęcia zasobów
                {
                    faza = processStage.zgloszenie;
                    czas = klasaZgl.czZakZgl;               // Losowanie czasu zakończenia obsługi zgłoszenia
                    ListaZd.DodajProces(this);              // Ponowne umieszczanie procesu na liście
                }
                else
                {
                    if (ListaZd.zapStatystyk)
                    {
                        klasaZgl.lStraconychZgl++;              // Uaktualnianie statystyk klasy
                        klasaZgl.warWyjsciaStr--;
                        if (klasaZgl.warWyjsciaStr == 0)
                        {
                            klasaZgl.sWiazka.WarWyjscia--;      // Warunkiem wyjścia jest odpowiednia liczba str zgłoszeń
                        }
                    }
                }
                break;

            //Kończenie obsługi zgłoszenia
            case processStage.zgloszenie:
                klasaZgl.sWiazka.UsunZgl(this);                 // Zwalnianie zasobów
                if (ListaZd.zapStatystyk)
                {
                    klasaZgl.lObsluzonychZgl++;                 // Uaktualnianie statystyk klasu
                    klasaZgl.warWyjsciaObsl--;
                    if (klasaZgl.warWyjsciaObsl == 0)
                    {
                        klasaZgl.sWiazka.WarWyjscia2--;         // Awaryjnym warunkiem wyjścia jest przesymulowanie okr liczby zgł
                    }
                }
                faza = processStage.zakonczenie;
                break;
            }
        }