Skip to content
This repository has been archived by the owner on May 16, 2023. It is now read-only.

funkcja(funktor) handle_packets() #1

Open
Lasica opened this issue Dec 15, 2014 · 1 comment
Open

funkcja(funktor) handle_packets() #1

Lasica opened this issue Dec 15, 2014 · 1 comment

Comments

@Lasica
Copy link
Owner

Lasica commented Dec 15, 2014

Funkcja handle_packets() bedzie przyjmowac pakiety i interpretować treści zawarte w pakiecie - wołać konkretne mechanizmy serwera w zaleznosci od zadania i konstruowac pakiet zwrotny ktory odda serwerowi do wyslania.

Powinna realizować kolejke pakietow jezeli jest wątkiem. Jezeli jest wątkiem, to operator() powinien byc przeciazony w klasie PacketHandler jako watek z pętlą oczekującą na pojawienie się czegoś w kolejce.

Kolejka może być priorytetowa jezeli pakiety będą mialy priorytet (np. pakiety gameroomow powinny miec pierwszenstwo nad wszelkim innym ruchem)...

UWAGA! Najlepiej napisać packet handler w taki sposób, żeby potem mozna bylo uzyc tej samej klasy do czesci serwera zajmujacej sie rozgrywką. Tej klasy, albo klasy pochodnej po tej klasie.

Wówczas możnaby utworzyć wewnętrzną tablicę routingu - czyli przypisanie gdzie w serwerze nalezy przekazac dany pakiet co każdy może sprawdzić żeby nie bawić się w kolejki priorytetowe -> po prostu każdy socket, skoro jest osobnym wątkiem sprawdza sobie do ktorego packet handlera ma przekazac pakiet i to robi, a potem w konrketnym packet handlerze pakiety sa rownouprawnione.

@Lasica
Copy link
Owner Author

Lasica commented Dec 15, 2014

Jezeli boost::asio faktycznie robi oddzielny watek do kazdego polaczenia, to w takim razie Packet handler musi być osobnym wątkiem wolanym w mainie, ktory ma (uwaga! BEZPIECZNĄ WIELOWĄTKOWO) kolejke na pakiety - umozliwia dla pewnego watku zostawienie pakietu na kolejce. W zasadzie wystarczy bezpieczna wielowątkowo funkcja register_packet().

Jezeli nie, to Packet handler bedzie jedynie funkcją ktora jest wolana za kazdym razem kiedy przyjdzie pakiet.

Poza tym przyda sie klasa Pakiet, która będzie przyjmowala streambuf ktory przyszedl i od razu tlumaczyla to na jakies czytelne dla programu pola

@Lasica Lasica changed the title Stworzyc packet handler funkcja(funktor) handle_packets() Dec 15, 2014
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant