leszek-milasz / gameOfThronesServer

0 stars 0 forks source link

Komunikacja - szczegóły realizacji #2

Open leszek-milasz opened 7 years ago

leszek-milasz commented 7 years ago

Moduł superior uruchamia moduł network i przekazuje jako argument dwie LinkedBlockingQueue o nazwach superiorToNetwork oraz networkToSuperior. Network czeka na pojawienie się gracza, a superior na pojawienie się wiadomości w network to superior. Po połączeniu się gracza klient wysyła zapytanie o utworzone pokoje, network przekazuje zapytanie do superior, superior zwraca null. Gracz ma tylko opcje utworzenia nowego pokoju. Wysyła zapytanie, network przekazuje do superior, superior tworzy wątek room i przesyła dwie nowe LinkedBlockingQueue o nazwach superiorToRoom i roomToSuperior. Room jest chatem, każdy gracz zaznacza też preferencje co do wyboru rodu. Kolejni gracze dołączają do pokoju i zaznaczają gotowy. Kiedy ostatni gracz kliknie gotowy, room przesyła do network żądanie utworzenia roomu. Network przesyła żądanie do superior, i dostaje w odpowiedzi dwie nowe LinkedBlockingQueue engineToNetwork oraz networkToEngine. Superior tworzy engine i podaje mu kolejki do komunikacji z network. Ogólnie: superior, room i engine czekają na pojawienie się komunikatu od network. Network nasłuchuje komunikatu od gracza. Jedyna wada tego rozwiązania jest taka, że gdy engine przetwarza dane to network wisi czekają na jego odpowiedź. Można to wyeliminować stosując ConcurrentLinkedQueue i otrzymując w pełni funkcjonalny system czasu rzeczywistego. Co sugerujecie?