Sense Handler komponent

Späť na analýzu hráča Uva Trilearn

Úloha komponentu je získavanie a úvodné spracovávanie informácií, ktoré chodia zo serveru.

SenseHandler je implementovaný ako samostatná trieda. SenseHandler pracuje ako samostatné vlákno. Kód vlákna je implementovaný v metóde handleMessagesFromServer.

Hlavná slučka - metóda handleMessagesFromServer

V tejto metóde je jediné volanie do komponentu Connection. Po prijatí správy je volaná metóda analyzeMessage. SenseHandler pracuje priamo s protokolom. Spracovanie protokolu neprebieha na nižsej vrstve.

Metóda analyzeMessage

Táto metóda je počiatočný stav pre stavový automat, ktorý analyzuje a spracuváva správy prichádzajúce zo servera. Pri správach sa analyzujú len minimálne prefixy správ. Preto sa úplny názov správ nemusí zhodovať s tými, ktoré sú definované v protokole.

Aktualizácia WorldModelu pri jednotlivých správach:

Typ správy Metóda (stav) Aktualizácia stavu WM
change analyzeChangePlayerTypeMessage WM->setHeteroPlayerType
clang nie je spracuvávaná
fullstate analyzeFullStateMessage Táto správa nie je používaná pri ostrých zápasoch
ok analyzeCheckBallMessage WM->setTimeCheckBall

WM->setCheckBallStatus
Táto správa je posielaná Couchom
see_g analyzeSeeGlobalMessage Zasiela informácie o všetkých objektoch do WM
see analyzeSeeMessage Okrem informácií o objekte je do WM posielaná aj informácia o čase, kedy bola správa prijatá
sense analyzeSenseMessage Všetky informácie sú posielané do WM
server analyzeServerParamMessage
init analyzeInitMessage
hear analyzeHearMessage Rozlišuje správy od rozhodcu, coucha a hračov. Správy od cudzích hráčov sú ignorované. Spracovanie správ od Coucha nie je implementované. Správa od hráča je priamo vložená do WM
player_type analyzePlayerTypeMessage
player_param analyzePlayerParamMessage
think WM->processRecvThink

Prispôsobovanie a analýza vstupov neprebieha na tejto úrovni. Informácie sú na úrovni SenseHandler len filtrované a následne posielané do WM.


Späť na hlavnú stránku | Aktuálna verzia na našom Wiki