Created SILC Crypto Toolkit git repository.
[crypto.git] / lib / silcutil / silcschedule_i.h
diff --git a/lib/silcutil/silcschedule_i.h b/lib/silcutil/silcschedule_i.h
deleted file mode 100644 (file)
index a88df59..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-
-  silcschedule_i.h.
-
-  Author: Pekka Riikonen <priikone@silcnet.org>
-
-  Copyright (C) 2001 - 2007 Pekka Riikonen
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-*/
-
-#ifndef SILCSCHEDULE_I_H
-#define SILCSCHEDULE_I_H
-
-#ifndef SILCSCHEDULE_H
-#error "Do not include this header directly"
-#endif
-
-#include "silchashtable.h"
-#include "silclist.h"
-
-/* Task types */
-typedef enum {
-  /* File descriptor task that performs some event over file descriptors.
-     These tasks are for example network connections. */
-  SILC_TASK_FD           = 0,
-
-  /* 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      = 1,
-
-  /* Platform specific process signal task.  On Unix systems this is one of
-     the signals described in signal(7).  On other platforms this may not
-     be available at all.  Only one callback per signal may be added. */
-  SILC_TASK_SIGNAL       = 2,
-
-  /* Asynchronous event task. */
-  SILC_TASK_EVENT        = 3,
-} SilcTaskType;
-
-/* Task header */
-struct SilcTaskStruct {
-  struct SilcTaskStruct *next;
-  SilcTaskCallback callback;
-  void *context;
-  unsigned int type    : 2;    /* SilcTaskType */
-  unsigned int valid   : 1;    /* Set if task is valid */
-};
-
-/* Timeout task */
-typedef struct SilcTaskTimeoutStruct {
-  struct SilcTaskStruct header;
-  struct timeval timeout;
-} *SilcTaskTimeout;
-
-/* Fd task */
-typedef struct SilcTaskFdStruct {
-  struct SilcTaskStruct header;
-  unsigned int scheduled  : 1;
-  unsigned int events     : 14;
-  unsigned int revents    : 14;
-  SilcUInt32 fd;
-} *SilcTaskFd;
-
-/* Event task */
-typedef struct SilcEventTaskStruct {
-  struct SilcTaskStruct header;
-  char *event;
-  SilcList connections;
-} *SilcEventTask;
-
-/* Scheduler context */
-struct SilcScheduleStruct {
-  SilcSchedule parent;            /* Parent scheduler */
-  void *internal;
-  void *app_context;              /* Application specific context */
-  SilcTaskNotifyCb notify;        /* Notify callback */
-  void *notify_context;                   /* Notify context */
-  SilcStack stack;                /* Stack */
-  SilcHashTable events;                   /* Event tasks */
-  SilcHashTable fd_queue;         /* FD task queue */
-  SilcList fd_dispatch;                   /* Dispatched FDs */
-  SilcList timeout_queue;         /* Timeout queue */
-  SilcList free_tasks;            /* Timeout task freelist */
-  SilcMutex lock;                 /* Scheduler lock */
-  struct timeval timeout;         /* Current timeout */
-  unsigned int max_tasks     : 29; /* Max FD tasks */
-  unsigned int has_timeout   : 1;  /* Set if timeout is set */
-  unsigned int valid         : 1;  /* Set if scheduler is valid */
-  unsigned int signal_tasks  : 1;  /* Set if to dispatch signals */
-};
-
-/* Locks. These also blocks signals that we care about and thus guarantee
-   that while we are in scheduler no signals can happen.  This way we can
-   synchronise signals with SILC Scheduler. */
-#define SILC_SCHEDULE_LOCK(schedule)                           \
-do {                                                           \
-  silc_mutex_lock(schedule->lock);                             \
-  schedule_ops.signals_block(schedule, schedule->internal);    \
-} while (0)
-#define SILC_SCHEDULE_UNLOCK(schedule)                         \
-do {                                                           \
-  schedule_ops.signals_unblock(schedule, schedule->internal);  \
-  silc_mutex_unlock(schedule->lock);                           \
-} while (0)
-
-/* Platform specific scheduler operations */
-typedef struct {
-  /* Initializes the platform specific scheduler.  This for example initializes
-     the wakeup mechanism of the scheduler.  In multi-threaded environment
-     the scheduler needs to be wakenup when tasks are added or removed from
-     the task queues.  Returns context to the platform specific scheduler.
-     If this returns NULL the scheduler initialization will fail.  Do not
-     add FD tasks inside function.  Timeout tasks can be added. */
-  void *(*init)(SilcSchedule schedule, void *app_context);
-
-  /* Uninitializes the platform specific scheduler context. */
-  void (*uninit)(SilcSchedule schedule, void *context);
-
-  /* System specific waiter. This must fill the schedule->fd_dispatch queue
-     with valid tasks that has something to dispatch, when this returns. */
-  int (*schedule)(SilcSchedule schedule, void *context);
-
-  /* Schedule `task' with events `event_mask'. Zero `event_mask'
-     unschedules the task. */
-  SilcBool (*schedule_fd)(SilcSchedule schedule, void *context,
-                         SilcTaskFd task, SilcTaskEvent event_mask);
-
-  /* Wakes up the scheduler. This is platform specific routine */
-  void (*wakeup)(SilcSchedule schedule, void *context);
-
-  /* Register signal */
-  void (*signal_register)(SilcSchedule schedule, void *context,
-                         SilcUInt32 signal, SilcTaskCallback callback,
-                         void *callback_context);
-
-  /* Unregister signal */
-  void (*signal_unregister)(SilcSchedule schedule, void *context,
-                           SilcUInt32 signal);
-
-  /* Call all signals */
-  void (*signals_call)(SilcSchedule schedule, void *context);
-
-  /* Block registered signals in scheduler. */
-  void (*signals_block)(SilcSchedule schedule, void *context);
-
-  /* Unblock registered signals in schedule. */
-  void (*signals_unblock)(SilcSchedule schedule, void *context);
-} SilcScheduleOps;
-
-/* The generic function to add any type of task to the scheduler.  This
-   used to be exported as is to application, but now they should use the
-   macro wrappers defined in silcschedule.h.  For Fd task the timeout must
-   be zero, for timeout task the timeout must not be zero, for signal task
-   the fd argument is the signal. */
-SilcTask silc_schedule_task_add(SilcSchedule schedule, SilcUInt32 fd,
-                               SilcTaskCallback callback, void *context,
-                               long seconds, long useconds,
-                               SilcTaskType type);
-
-#ifdef SILC_DIST_INPLACE
-/* Print scheduler statistics to stdout. */
-void silc_schedule_stats(SilcSchedule schedule);
-#endif /* SILC_DIST_INPLACE */
-
-#endif /* SILCSCHEDULE_I_H */