예제 #1
0
            public Bilet ZdobadzNumer(Matka matka)
            {
                Bilet bilet;

                Thread.Sleep(Opoznienie * TimeBase);
                ListaSprawDostep.WaitOne();
                switch (matka.ZwrocTyp())
                {
                case Matka.Sprawa.Typ.Administracja:
                    bilet = new Bilet('A', OstatniNumerek);
                    ListaSpraw.Add(bilet);
                    break;

                case Matka.Sprawa.Typ.Finanse:
                    bilet = new Bilet('F', OstatniNumerek);
                    ListaSpraw.Add(bilet);
                    break;

                default:
                    bilet = new Bilet('U', OstatniNumerek);
                    ListaSpraw.Add(bilet);
                    break;
                }
                OstatniNumerek++;
                ListaMatek.Add(matka);
                ListaSprawDostep.ReleaseMutex();
                zajety.ReleaseMutex();
                return(bilet);
            }
예제 #2
0
            void NowaSprawa()
            {
                ListaSprawDostep.WaitOne();
                int  index;
                bool Flaga = false;

                switch (kompetencja)
                {
                case Kompetencje.Administracja:
                    index = ListaSpraw.FindIndex(x => x.ZwrocKolejke() == 'A');
                    if (index != -1)
                    {
                        okienko.UstawWywolanyBilet(ListaSpraw.ElementAt(index));
                        ListaSpraw.RemoveAt(index);
                        okienko.Podejdz();
                        Console.WriteLine("Urzednik nr " + ID + ": Przydzielam sprawe nr " + okienko.ZdobadzWywolanyBilet() + " w okienku " + okienko.NumerOkienka);
                    }
                    else
                    {
                        Flaga = true;
                    }
                    break;

                case Kompetencje.Finanse:
                    index = ListaSpraw.FindIndex(x => x.ZwrocKolejke() == 'F');
                    if (index != -1)
                    {
                        okienko.UstawWywolanyBilet(ListaSpraw.ElementAt(index));
                        ListaSpraw.RemoveAt(index);
                        okienko.Podejdz();
                        Console.WriteLine("Urzednik nr " + ID + ": Przydzielam sprawe nr " + okienko.ZdobadzWywolanyBilet() + " w okienku " + okienko.NumerOkienka);
                    }
                    else
                    {
                        Flaga = true;
                    }
                    break;

                default:
                    index = ListaSpraw.FindIndex(x => true);
                    if (index != -1)
                    {
                        okienko.UstawWywolanyBilet(ListaSpraw.ElementAt(index));
                        ListaSpraw.RemoveAt(index);
                        okienko.Podejdz();
                        Console.WriteLine("Urzednik nr " + ID + ": Przydzielam sprawe nr " + okienko.ZdobadzWywolanyBilet() + " w okienku " + okienko.NumerOkienka);
                    }
                    else
                    {
                        Flaga = true;
                    }
                    break;
                }
                ListaSprawDostep.ReleaseMutex();
                if (Flaga)
                {
                    SprawdzPrzerwe(15);
                }
            }
예제 #3
0
            public void Update()
            {
                switch (stan)
                {
                case MozliwyStan.Kolejka:
                    Pobierz_Bilet();
                    break;

                case MozliwyStan.Poczekalnia:
                    Podejdz_Do_Okienka();
                    break;

                case MozliwyStan.Okienko:
                    if (!sprawa.Rozwiazana)
                    {
                    }
                    else
                    {
                        Console.WriteLine("Matka " + Name + " ma rozwiazana sprawe");
                        Awansuj();
                    }
                    break;

                case MozliwyStan.Wyszla:
                    Console.WriteLine("Wyszłam, mam ID: " + Name + " | Zostałam obsłużona z numerem: " + bilet);
                    Console.WriteLine("Timestamps: ");
                    Console.WriteLine("Przyszlam o " + spisczasu.CzasPrzyjscia);
                    if (spisczasu.CzasOtrzymaniaNumerka.Year != 1)
                    {
                        Console.WriteLine("Otrzymalam numerek o " + spisczasu.CzasOtrzymaniaNumerka);
                        if (spisczasu.CzasPodejsciaDoOkienka.Year != 1)
                        {
                            Console.WriteLine("Podeszłam do okienka o " + spisczasu.CzasPodejsciaDoOkienka);
                            if (spisczasu.CzasRozwiazaniaSprawy.Year != 1)
                            {
                                Console.WriteLine("Rozwiązałam sprawe o " + spisczasu.CzasRozwiazaniaSprawy);
                            }
                            else
                            {
                                Console.WriteLine("Nie rozwiązałam sprawy");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Nie podeszłam do okienka");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Nie otrzymałam numerka");
                    }
                    break;

                default:
                    break;
                }
                if (!SimulationRunning)
                {
                    if (stan == MozliwyStan.Kolejka)
                    {
                        ListaSprawDostep.WaitOne();
                        ListaMatek.Add(this);
                        ListaSprawDostep.ReleaseMutex();
                        stan = MozliwyStan.Wyszla;
                    }
                    else if (stan == MozliwyStan.Poczekalnia)
                    {
                        stan = MozliwyStan.Wyszla;
                    }
                }
            }