## 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

- Antworten:
  - Re: [ct-bot] neues Verhalten bot_cancel_behaviour
    - From: Timo Sandmann

- Referenzen:
  - RE: [ct-bot] neues Verhalten bot_cancel_behaviour
    - From: Menzel, Frank IT-OO4

- Voriger (Datum): [ct-bot] Prio bei bot_delay_behaviour, Menzel, Frank IT-OO4
- Nächster (Datum): Re: [ct-bot] Prio bei bot_delay_behaviour, Timo Sandmann
- Voriger (Thread): RE: [ct-bot] neues Verhalten bot_cancel_behaviour, Menzel, Frank IT-OO4
- Nächster (Thread): Re: [ct-bot] neues Verhalten bot_cancel_behaviour, Timo Sandmann
- Indizes:
  - Datum
  - Thread