Exemple #1
0
        private static void CreateClient(Boss boss, int counter)
        {
            Client client = new Client(counter);
            if(client.manicure_wanted)
                Console.WriteLine("Przybył klient " + client.name + " na strzyżenie i manicure");
            else
                Console.WriteLine("Przybył klient " + client.name + " tylko na strzyżenie");

            boss.TakeClient(client);
        }
Exemple #2
0
        public void TakeClient(Client client)
        {
            bool wantManicure = client.manicure_wanted;
            bool entered = false;

            entered = CheckWaitingRoom(client);
            if (!entered)
            {
                Console.WriteLine("Klient " + client.name + " wychodzi.");
                ClientLeaves(out client);
            }

            CheckClientsForManicure();
            CheckClientsForBarber();
        }
Exemple #3
0
 public bool CheckWaitingRoom(Client client)
 {
     Console.WriteLine(client.name + "  Sprawdzam dostępność poczekalni");
     if (waiting_room.Count < waiting_room.Capacity)
     {
         Console.WriteLine(client.name + "  Wolne miejsce. Wchodzę do poczekalni.");
         waiting_room.Add(client);
         return true;
     }
     else
     {
         Console.WriteLine(client.name + "  Nie ma miejsca w poczekalni." );
         return client.WaitForRoom(this);
     }
 }
Exemple #4
0
        void CheckBarbers(Client client)
        {
            bool freeBarber = false;
            Console.WriteLine("Szukam fryzjera dla klienta " + client.name);
            foreach(Barber b in barbers)
            {
                Console.WriteLine("Sprawdzam fryzjera " + b.name);
                if (Monitor.TryEnter(b))
                {
                    Console.WriteLine("Fryzjer " + b.name + " wolny. Wchodzi do monitora");
                    waiting_room.Remove(client);
                    clients_at_barber.Add(client);
                    freeBarber = true;
                    try
                    {
                        client.Haircut(b);
                        Monitor.Pulse(b);
                    }
                    finally
                    {
                        Monitor.Exit(b);
                        Console.WriteLine("Fryzjer " + b.name + " opuszcza monitor.");
                        clients_at_barber.Remove(client);

                        if(!client.manicure_wanted)
                        {
                            Console.WriteLine("Klient " + client.name + " wychodzi.");
                            ClientLeaves(out client);
                        }
                        else if(client.manicure_wanted && !client.manicure_done)
                        {
                            CheckWaitingRoom(client);
                        }
                        CheckClientsForBarber();
                    }
                    break;
                }
                else
                {
                    Console.WriteLine("Fryzjer " + b.name + " zajęty.");
                }
            }

            if (!freeBarber)
            {
                Console.WriteLine("Brak wolnych fryzjerów");
            }
        }
Exemple #5
0
 public void ClientLeaves(out Client client)
 {
     client = null;
 }
Exemple #6
0
        void CheckManicurist(Client client)
        {
            bool freeManicurist = false;
            Console.WriteLine("Szukam manikurzystki dla klienta " + client.name);

            foreach (Manicurist m in manicurists)
            {
                if (Monitor.TryEnter(m))
                {
                    Console.WriteLine("Manikurzystka " + m.name + " wolna. Wchodzi do monitora");
                    clients_at_manicurist.Add(client);
                    waiting_room.Remove(client);
                    freeManicurist = true;
                    try
                    {
                        client.Manicure(m);
                        Monitor.Pulse(m);
                    }
                    finally
                    {
                        Monitor.Exit(m);
                        Console.WriteLine("Manikurzystka " + m.name + " opuszcza monitor.");
                        clients_at_manicurist.Remove(client);

                        if (client.haircut_done)
                        {
                            Console.WriteLine("Klient " + client.name + " wychodzi.");
                            ClientLeaves(out client);
                        }
                        else
                        {
                            CheckWaitingRoom(client);
                        }
                        CheckClientsForManicure();

                    }
                    break;
                }
            }

            if (!freeManicurist)
            {
                Console.WriteLine("Brak wolnych manikurzystek");
            }
        }