SILC_FSM_EVENT_TIMEDWAIT
NAME
SILC_FSM_EVENT_TIMEDWAIT(event, seconds, useconds, timedout)
DESCRIPTION
Macro used to wait for the `event' to be signalled, or until the timeout specified by `seconds' and `useconds' has elapsed. If the timeout occurs before the event is signalled, the machine will wakeup. The `timedout' is SilcBool pointer and if it is non-NULL indication of whether timeout occurred or not is saved to the pointer. This macro can only be used in FSM state functions. When the event is signalled or timedout the FSM will re-enter the current state (or state that was set with silc_fsm_next before waiting).
EXAMPLE
SILC_FSM_STATE(silc_foo_state) { SilcBool timedout; ... // Wait here for async call to complete, or 10 seconds for timeout SILC_FSM_EVENT_TIMEDWAIT(ctx->async_event, 10, 0, &timedout); // See if timeout occurred if (timedout == TRUE) fatal(error); // Async call completed if (ctx->async_success == FALSE) fatal(error); ... }