Function silc_schedule_task_add
SYNOPSIS
SilcTask silc_schedule_task_add(SilcSchedule schedule, SilcUInt32 fd,
SilcTaskCallback callback,
void *context,
long seconds, long useconds,
SilcTaskType type,
SilcTaskPriority priority);
DESCRIPTION
Registers a new task to the scheduler. This same function is used
to register all types of tasks. The `type' argument tells what type
of the task is. Note that when registering non-timeout tasks one
should also pass 0 as timeout, as the timeout will be ignored anyway.
Also, note, that one cannot register timeout task with 0 timeout.
There cannot be zero timeouts, passing zero means no timeout is used
for the task and SILC_TASK_FD is used as default task type in
this case.
The `schedule' is the scheduler context. The `fd' is the file
descriptor of the task. On WIN32 systems the `fd' is not actual
file descriptor but some WIN32 event handle. On WIN32 system the `fd'
may be a socket created by the SILC Net API routines, WSAEVENT object
created by Winsock2 network routines or arbitrary WIN32 HANDLE object.
On Unix systems the `fd' is always the real file descriptor.
The `callback' is the task callback that will be called when some
event occurs for this task. The `context' is sent as argument to
the task `callback' function. For timeout tasks the callback is
called after the specified timeout has elapsed.
If the `type' is SILC_TASK_TIMEOUT then `seconds' and `useconds'
may be non-zero. Otherwise they should be zero. The `priority'
indicates the priority of the task.
It is always safe to call this function in any place. New tasks
may be added also in task callbacks, and in multi-threaded environment
in other threads as well.
|