Erlang gen_fsm переход в новое состояние - PullRequest
1 голос
/ 24 мая 2011

У меня есть erlang gen_fsm, мое первое состояние:

begin({Nick}, _From, State) ->
            {reply, true, next_state, State}.

Тогда у меня есть:

next_state(_Event, _From, State) -> 
        io:format("Test \n"),
        {reply, ok, begin, State}.

Но я не видел Test примечание в оболочке

Как правильно перейти в новое состояние?

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Прежде всего, убедитесь, что begin является фактическим начальным состоянием вашего FSM.Вы указываете начальное состояние вашего FSM, возвращая в вашей функции init что-то вроде:

{ok, begin, State}

Где begin - ваше начальное состояние.

Также обратите внимание, что вы определяете функцию Module:StateName/3, которая будет вызываться каждый раз, когда на вашем FSM выполняется gen_fsm:sync_send_event.Если вы пытаетесь отправить события в FSM с помощью gen_fsm:send_event, вам следует вместо этого определить функцию Module:StateName/2, которая является ее асинхронной версией.

Наконец, попробуйте отладить ваши модули с помощью трассировки их, а не добавление распечаток.Это намного проще и позволяет избежать перекомпиляции кода раз за разом.

Более подробная информация доступна здесь .

2 голосов
/ 24 мая 2011

вы можете найти несколько примеров здесь:

http://spawnlink.com/articles/an-introduction-to-gen_fsm-erlybanks-atm/index.html

и здесь:

http://pdincau.wordpress.com/2010/09/07/an-introduction-to-gen_fsm-behaviour/

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...