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