Hello everybody,
I have two files, main.erl which control a finite state machine (FSM) with
a gen_fsm behavior.
The FSM is also able to received incoming data from a socket for certain
state (using the handle_info method).
The question is how the main program can wait and know the next state after
handle_info callback is done by the gen_fsm....
because, according to the rawdata received the system move to another state
and main.erl must know this new state to send specifics events....
Maybe more easy to understand with a small illustration
main.erl
{ok, FSMPid} = myfsm:start_link(...),
ok = gen_fsm:sync_send_event(FSMPid, event1)
% => will move the FSM to state_5 where we are waiting
socket incoming data
% these data will be handle by "handle_info({tcp,
_Socket, RawData}, state_5, StateData)"
% depending on the received socket rawdata, we will
change the state of the FSM
=> How can I wait handle_info has finished ?
=> How can I get the state ?
(for this last question, I think I can just send a
send_all_state(FSMPid, current_state) for example and return the StateName
program will continue like this:
case StateName of
state_13 -> send another event
....
thanks for help,
Arnaud
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120509/a8a99774/attachment.html>