next up previous contents
Nächste Seite: Destruktor Aufwärts: Weitere öffentliche Schnittstellen Vorherige Seite: Konstruktor   Inhalt


init

comm_error init(const char* host, 

                int port, 

                bool losingPackets, 

                bool reconnect, 

                bool isGoalie, 

                bool isCoach)

initialisiert den Socket, meldet sich beim Server an, schaltet die Signalhandler ein, setzt das Alarmsignal und generiert den SpokenMsgAdmin, sofern alles andere erfogreich war. Jeder Fehler beendet die Ausführung des Rests von init() und liefert den Fehler zurück.

Der losingPackets Parameter legt fest, ob die Signalkomponente des Comm-Moduls selbständig und unabhängig vom Server die serverTime erhöhen darf, wenn sie es ``für richtig hält''. Dies löst immer auch ein Versenden eines Kommandos aus. Das Erhöhen wird in der alarmAction() Methode ausgeführt und findet immer dann statt, wenn eine gewisse Zeit (SIMULATOR_STEP+ALARM_MARGIN) keine Nachrichten vom Server empfangen wurden (die Bezeichnung des ALARM_MARGIN hat sich inzwischen wieder geändert !). Das Aktivieren dieser Funktion ist nur dann sinnvoll, wenn das Comm-Modul vom Server nicht zu jedem Zeitschritt mindestens eine Nachricht bekommt (bei Paketverlusten im Netzwerk, oder bei deaktivierten SenseBody Nachrichten nach Serverprotokoll 4). In diesem Fall braucht das Comm-Modul eine unabhängige Mitteilung darüber, ob sich der Server inzwischen in einem neuen Takt befindet, was durch den Alarm realisiert wird. In welchen Fällen genau (hohe Netzwerklast, schneller Server o.Ä.) Paketverluste auftreten, wurde noch nicht untersucht.

Solange das Comm-Modul allerdings zu jedem Zeitschritt mindestens eine Nachricht erhält, ist die Synchronisation über die Nachrichten in der Regel genauer als die über den AlarmTimer, da sie ständig mit dem Server gekoppelt ist. Bei guter Einstellung des AlarmTimers (Einstellung passiert automatisch, siehe sendAction()) kann er aber dafür sorgen, daß auch bei unvollständiger Information beinahe kein Zeitschritt verloren geht. Dafür muß aber sichergestellt werden, daß der Server tatsächlich mit SIMULATOR_STEP Intervallen funktioniert, d.h. nicht durch Belastung langsamer läuft.


next up previous contents
Nächste Seite: Destruktor Aufwärts: Weitere öffentliche Schnittstellen Vorherige Seite: Konstruktor   Inhalt
Debian User 2001-05-17