* operation, no callback function will be called back to the upper layer.
* This must be remembered when implementing the operation layer.
*
+ * EXAMPLE
+ *
+ * SilcAsyncOperation async_call(Callback callback, void *cb_context)
+ * {
+ * SilcAsyncOperation op;
+ * OpContext ctx;
+ *
+ * // Allocate async operation so that caller can control us, like abort
+ * op = silc_async_alloc(async_call_abort, NULL, ctx);
+ * ctx->callback = callback;
+ *
+ * ...
+ *
+ * // Return async operation for upper layer
+ * return op;
+ * }
+ *
+ * // This callback is called when silc_async_abort is called by upper layer.
+ * // The callback given to async_call must not be called after this.
+ * void async_call_abort(SilcAsyncOperation op, void *context)
+ * {
+ * OpContext ctx = context;
+ * ctx->aborted = TRUE;
+ * ctx->callback = NULL;
+ * }
+ *
***/
#ifndef SILCASYNC_H
* silc_async_abort. Since this use pre-allocated context, the function
* silc_async_free need not be called. This function is equivalent
* to silc_async_alloc except this does not allocate any memory. The `op'
- * needs not be uninitialized.
+ * needs not be uninitialized. This returns always TRUE.
*
* 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