| 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);
      ...
    }
 
 
 
 |