[erlang-questions] gen_fsm - timeout ?

Sean Hinde <>
Tue Sep 19 11:47:05 CEST 2006


On 19 Sep 2006, at 10:06, Chandru wrote:

> On 19/09/06, Sanjaya Vitharana <> wrote:
> Hi ... ALL,
>
> Behavior: Gen FSM
>
> Scenario:
> Want to be in state "open" (see below) for limited time (assume 5  
> sec) until some EXPECTED event (as_E) comes, have to move to some  
> other state if the expected event not received in that time. All  
> other events should be ignored in state "open".
>
>
> One way around this is to not use the built-in timeout  
> functionality i.e drop the timeout value from the return value of  
> the callback function. You can use erlang:send_after/3  to send  
> yourself a message 5 seconds later.

Or you could use gen_fsm:send_event_after/2 which is designed to work  
seamlessly with the gen_fsm state handling. The timeout message is  
delivered directly into the current state callback.

If you need the original timer reference in the timeout message  
(Useful f you don't have another reference to the transaction that  
has timed out, and want to find it in e.g. a local ets table) then  
gen_fsm: start_timer/2 can be used.

Sean





More information about the erlang-questions mailing list