SILC Core Library
    SILC Auth API
    SILC Channel API
    SILC Command API
    SILC ID API
    SILC ID Cache API
    SILC Modes
    SILC Notify API
    SILC Packet API
    SILC Payload API
    SILC Private API
SILC Math Library
    SILC Math API
    SILC MP API
SILC SFTP Library
    SILC SFTP API
    SILC SFTP Filesystems
SILC Utility Library
    SILC Buffer API
    SILC Buffer Format API
    SILC Buffer Utility API
    SILC Hash Table API
    SILC Log and Debug API
    SILC Memory API
    SILC Mutex API
    SILC Thread API
    SILC Net API
    SILC Schedule API
    SILC Socket Connection API
    SILC Protocol API
    SILC Util API
    SILC Zip API
    SILC List API
    SILC Dynamic List API
SILC Key Exchange Library
    SILC SKE API
    SILC SKE Status
SILC Client Library
    SILC Client API
SILC Crypto Library
    SILC Cipher API
    SILC Hash API
    SILC HMAC API
    SILC PKCS API
    SILC RNG API
SilcTaskType

NAME
 
    typedef enum { ... } SilcTaskType;

DESCRIPTION

    SILC has three types of tasks, non-timeout tasks (tasks that perform
    over file descriptors), timeout tasks and generic tasks (tasks that
    apply to every file descriptor). This type is sent as argument for the 
    task registering function, silc_schedule_task_add.

SOURCE
    typedef enum {
      /* File descriptor task that performs some event over file descriptors.
         These tasks are for example network connections. */
      SILC_TASK_FD,
      
      /* Timeout tasks are tasks that are executed after the specified 
         time has elapsed. After the task is executed the task is removed
         automatically from the scheduler. It is safe to re-register the
         task in task callback. It is also safe to unregister a task in
         the task callback. */
      SILC_TASK_TIMEOUT,
    
      /* Generic tasks are non-timeout tasks and they apply to all file 
         descriptors, except to those that have explicitly registered a 
         non-timeout task. These tasks are there to make it simpler and faster 
         to execute common code that applies to all connections. These are,
         for example, receiving packets from network and sending packets to
         network. It doesn't make much sense to register a task that receives
         a packet from network to every connection when you can have one task
         that applies to all connections. This is what generic tasks are for.
         Generic tasks are not bound to any specific file descriptor, however,
         the correct file descriptor must be passed as argument to task
         registering function. */
      SILC_TASK_GENERIC,
    } SilcTaskType;
>> SilcScheduleAPI
>> SilcSchedule
>> SilcTask
>> SilcTaskType
>> SilcTaskEvent
>> SilcTaskPriority
>> SilcTaskCallback
>> SILC_ALL_TASKS
>> SILC_TASK_CALLBACK
>> SILC_TASK_CALLBACK_GLOBAL
>> silc_schedule_init
>> silc_schedule_uninit
>> silc_schedule_stop
>> silc_schedule
>> silc_schedule_one
>> silc_schedule_wakeup
>> silc_schedule_task_add
>> silc_schedule_task_del
>> silc_schedule_task_del_by_fd
>> silc_schedule_task_del_by_callback
>> silc_schedule_task_del_by_context
>> silc_schedule_set_listen_fd
>> silc_schedule_unset_listen_fd