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