c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] neues Verhalten bot_cancel_behaviour

Absender: Timo Sandmann
Datum: Mo, 22.10.2007 11:25:02
In-reply-to: <812F86EC9E1A96489D5E83C2AB7D68860157848D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <812F86EC9E1A96489D5E83C2AB7D68860157848D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>


Hallo Frank,

Am 22.10.2007 um 09:37 schrieb Menzel, Frank IT-OO4:
Hallo Timo,
bb früh am Morgen oder am Abend, Du bist immer so schnell mit Antworten. Wie machst Du das bloß :-?

na ja, hängt ein bisschen von meinem Stundenplan und Akkufüllstand ab ;-) Meist ist es aber einfacher, direkt zu antworten, als die eMail erst auf die ToDo-Liste zu setzen.

Wenn bot_cancel_behaviour mit NULL aufgerufen wird, so wird ja auf keinen Fall das Verhalten1 wieder aktiviert... Ja gut, man könnte abfragen ob das Cancelverhalten deaktiviert wurde und erst dann im Kontext des Verhaltens weitermachen. Aber gibt's nicht ein besseres Mittel deactivateCalledBehaviours aufzurufen ohne caller zu initialisieren ? Das passiert ja dann sowieso vom nachfolgenden Aufruf return_from_behaviour.

Also irgendwas ist da aber noch merkwürdig (oder ich versteh's falsch):
Wenn Verhalten 1 das Verhalten 2 aufruft, ist 2->caller == 1.
Wenn Verhalten 1 außerdem cancel_behaviour(2) aufruft, ist cancel- >caller == 1. Trifft nun die Abbruchbedingung zu, ruft cancel deactivateCalled... (2) auf, was alle Verhalten deaktiviert, die 2 gestartet hat und deren Caller werden jeweils gelöscht. Dann wird deactivateBehaviour(2) aufgerufen (bevor bot_behave() in die nächste Runde geht), was 2 selbst deaktiviert und den Caller von 2 löscht. Abschließend wird return_from_behaviour(cancel) aufgerufen, was cancel deaktiviert und den cancel->caller aktiviert. cancel->caller == 1, also müsste doch wieder 1 gestartet werden.

Aber wo ist jetzt der Denkfehler? Ich seh grad kein Problem mehr :-/

Gruß Timo

-----Original Message-----
From: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx [mailto:ct-bot- entwickler-bounces@xxxxxxxxxxxxxxxxx] On Behalf Of Timo Sandmann
Sent: Monday, October 22, 2007 9:16 AM
To: Entwicklung rund um den c't-bot
Subject: Re: [ct-bot] neues Verhalten bot_cancel_behaviour

Hallo Frank,

Am 22.10.2007 um 07:40 schrieb Menzel, Frank IT-OO4:
Hallo Timo,
Du hast nun zusätzlich deactivateCalledBehaviours eingebaut. Dies hat
nun zur Folge, dass das Verhalten1, welches das Cancel- Verhalten als
auch das abzubrechende Verhalten2 aufruft, nicht wieder aktiviert wird
nach Zuschlagen der Abbruchbedingung.

Zur Verdeutlichung:
Verhalten 1 ruft also auf:
-Verhalten2 mit data-Verhalten1
-cancel-Verhalten ebenfalls mit data-Verhalten1, um Verhalten2
abzubrechen


Nun trifft Abbruchbedingung des Cancel-Verhaltens zu und Verhalten2
wird abgebrochen. Verhalten2 erreicht nicht die Endestelle mit
return_from_behaviour.
Das Cancelverhalten erreicht zwar return_from_behaviour, es wird aber
scheinbar der caller vorher durch deactivateCalledBehaviours
initialisiert und damit Verhalten 1 nach Rückkehr nicht mehr
aktiviert.

und das so früh am Morgen... ich glaube, ich weiß aber, was du meinst.
Sollte nicht ein Aufruf von bot_cancel_behaviour(NULL) (also kein Caller), das Problem umgehen?

Nach Auskommentieren von deactivateCalledBehaviours funktioniert es
wieder.

Aber ohne deactivateCalledBehaviours(), lassen sich keine Verhalten deaktivieren, die andere Verhalten starten, wie z.B. solve_maze(). Da solve_maze() fast nie selbst aktiv ist, sondern nur die vom ihm gestarteten Hilfsverhalten, läuft deactivateBehaviour() dann ins Leere und nichts passiert.

Gruß Timo

_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler


Confidentiality note:
The information in this email and any attachment may contain confidential and proprietary information of Heidelberger Druckmaschinen AG and/or its affiliates and may be privileged or otherwise protected from disclosure. If you are not the intended recipient, you are hereby notified that any review, reliance or distribution by others or forwarding without express permission is strictly prohibited and may cause liability. In case you have received this message due to an error in transmission, we kindly ask you to notify the sender immediately and to delete this email and any attachment from your system.

_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler