ZADANIE 2 ****************************************************** TERMIN ROZLICZENIA: na zajeciach 26/27.04.1995 ****************************************************** Agencja towarzyska: Agent X (server) prowadzi agencje towarzyska. Rownoczesnie z uslug agencji moze korzystac co najwyzej 10 osob. Agent przyjmuje zgloszenia klientow na znalezienie "towarzysza zycia" i w miare mozliwosci stara sie laczyc klientow w pary (przeciwnej plci). Klient wysyla do agenta zgloszenie, podajac swoj numer i plec (k-kobieta, m-mezczyzna). Agent przeszukuje swoja baze danych i: -- jesli stwierdzi, ze ma juz dziesiec osob, to wysyla odpowiedz odmowna, -- jesli nie znajdzie zadnego czekajacego zgloszenia od osoby przeciwnej plci, to wstrzymuje sie z odpowiedzia, az znajdzie partnera, -- jesli znajdzie wolna osobe, to wysyla do obu potencjalnych partnerow numer osoby przeciwnej (zapamietujac w swoich strukturach danych, ze te osoby sa chwilowo zajete). Konwersacje partnerow zaczyna mezczyzna: -- czyta z wejscia tekst (do 30 znakow) i wysyla go do kobiety, -- czeka na odpowiedz kobiety, wysyla otrzymany tekst na ekran, -- jesli stwierdzi, ze kobieta przyslala mu komunikat "TAK" to wysyla do agenta informacje o zawarciu przez pare kontraktu (np. malzenskiego), po czym konczy dzialanie, -- jesli stwierdzi, ze kobieta przyslala mu komunikat "NIE", to wysyla do agenta informacje, ze para ponownie oczekuje na partnerow i czeka na nowa kandydatke, -- jesli kobieta przysle mu inny komunikat, to czyta z wejscia nowy tekst (powrot do poczatku). Natomiast kobieta: -- odbiera komunikat od mezczyzny, -- wysyla otrzymany tekst na standardowe wyjscie, -- czyta z wejscia tekst swojej odpowiedzi, -- przesyla ja mezczyznie, -- jesli tym tekstem bylo "TAK", to konczy dzialanie, -- jesli tym tekstem bylo "NIE", to przestaje konwersowac z tym partnerem i czeka, az agent poda jej adres nastepnego, -- jesli byl to inny tekst, to czeka az partner przysle jej nowy komunikat (powrot do poczatku). Uwagi: 1) Komunikacja pomiedzy procesami powinna sie odbywac za pomoca komunikatow. 2) Za utworzenie wszystkich potrzebnych kolejek komunikatow (czterech!) odpowiada agent. Przeznaczenie kolejek: DO_A: na komunikaty od klientow do agenta, OD_A: na komunikaty od agenta do klientow, DO_M: na komunikaty od kobiet do mezczyzn, DO_K: na komunikaty od mezczyzn do kobiet. W trzech ostatnich kolejkach nr procesu jest numerem podkanalu. 3) Poniewaz rownoczesnie z jednego interpretatora mozna uruchomic tylko jeden proces czytajacy dane z klawiatury, wiec klientow trzeba uruchamiac albo z innych sesji (okienek), albo dokonujac przeadresowania wejscia na plik (zawierajacy w kolejnych wierszach kolejne "odzywki", a w ostatnim wierszu "TAK" lub "NIE"). 4) Agent konczac dzialanie (np. na skutek wyslania sygnalu z klawiatury) powinien zlikwidowac wszystkie kolejki komunikatow (wymaga to umieszczenia w kodzie funkcji obslugi odpowiednich sygnalow). 5. Mozna zalozyc, ze zaden klient nie zrezygnuje z uslug agencji w trakcie poznawania partnera (tzn. ze procesy beda dzialaly zgodnie z opisanym scenariuszem). Powodzenia, Janina Mincer (3.02.1995)