Function silc_async_alloc
SYNOPSIS
SilcAsyncOperation silc_async_alloc(SilcAsyncOperationAbort abort_cb,
SilcAsyncOperationPause pause_cb,
void *context);
DESCRIPTION
Start asynchronous operation, and assign `abort_cb' callback for it,
which can be used by some upper layer to abort the asynchronous
operation, by calling the silc_async_abort. The layer which calls
this function must also call silc_async_free when the asynchronous
operation is successfully completed. If it is aborted by upper layer
then silc_async_free must not be called, since it is called by the
silc_async_abort function.
If the `pause_cb' is provided then the upper layer may also halt and
then later resume the execution of the operation, by calling the
silc_async_halt and silc_async_resume respectively. If `pause_cb' is
not provided then these functions has no effect for this operation.
EXAMPLE
SilcAsyncOperation silc_async_call(Callback callback, void *cb_context)
{
SilcAsyncOperation op;
...
// Allocate async operation so that caller can control us, like abort
op = silc_async_alloc(silc_async_call_abort, NULL, ctx);
// Start async operation in FSM
silc_fsm_init(&ctx->fsm, ctx, fsm_destructor, ctx, schedule);
silc_fsm_start(&ctx->fsm, first_state);
...
// Return async operation for upper layer
return op;
}
|