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); }
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(); }
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); } }
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"); } }
public void ClientLeaves(out Client client) { client = null; }
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"); } }