From: Stephen D. <sd...@us...> - 2006-01-04 10:16:05
|
Update of /cvsroot/naviserver/naviserver/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28689/include Modified Files: ns.h Log Message: * include/ns.h: * nsd/nsd.h: * nsd/Makefile: * nsd/nsmain.c: * nsd/sock.c: * nsd/task.c: Backport AOLserver task queues. Callbacks are registered to run in a seperate thread in response to socket read/write events. Index: ns.h =================================================================== RCS file: /cvsroot/naviserver/naviserver/include/ns.h,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** ns.h 30 Dec 2005 11:26:42 -0000 1.66 --- ns.h 4 Jan 2006 10:15:52 -0000 1.67 *************** *** 136,140 **** #define NS_SOCK_DROP 0x10 /* Unused */ #define NS_SOCK_CANCEL 0x20 /* Remove event from sock callback thread */ ! #define NS_SOCK_ANY 0xFF /* ??? */ /* --- 136,142 ---- #define NS_SOCK_DROP 0x10 /* Unused */ #define NS_SOCK_CANCEL 0x20 /* Remove event from sock callback thread */ ! #define NS_SOCK_TIMEOUT 0x40 /* Timeout waiting for socket event. */ ! #define NS_SOCK_INIT 0x80 /* Initialise a Task callback. */ ! #define NS_SOCK_ANY (NS_SOCK_READ|NS_SOCK_WRITE|NS_SOCK_EXCEPTION) /* *************** *** 278,281 **** --- 280,294 ---- #define NS_DSTRING_PRINTF_MAX 2048 + /* + * Typedefs of variables + */ + + typedef struct _Ns_Cache *Ns_Cache; + typedef struct _Ns_Entry *Ns_Entry; + typedef Tcl_HashSearch Ns_CacheSearch; + typedef struct _Ns_Cls *Ns_Cls; + typedef void *Ns_OpContext; + typedef struct _Ns_TaskQueue *Ns_TaskQueue; + typedef struct _Ns_Task *Ns_Task; /* *************** *** 317,320 **** --- 330,334 ---- typedef void (Ns_TclDeferProc) (Tcl_Interp *interp, void *arg); typedef int (Ns_SockProc) (SOCKET sock, void *arg, int why); + typedef void (Ns_TaskProc) (Ns_Task *task, SOCKET sock, void *arg, int why); typedef void (Ns_SchedProc) (void *arg, int id); typedef int (Ns_ServerInitProc) (char *server); *************** *** 531,545 **** /* - * Typedefs of variables - */ - - typedef struct _Ns_Cache *Ns_Cache; - typedef struct _Ns_Entry *Ns_Entry; - typedef Tcl_HashSearch Ns_CacheSearch; - - typedef struct _Ns_Cls *Ns_Cls; - typedef void *Ns_OpContext; - - /* * adpparse.c: */ --- 545,548 ---- *************** *** 1087,1090 **** --- 1090,1137 ---- NS_EXTERN double Ns_DRand(void); + /* + * task.c: + */ + + NS_EXTERN Ns_TaskQueue * + Ns_CreateTaskQueue(char *name) + NS_GNUC_NONNULL(1); + + NS_EXTERN void + Ns_DestroyTaskQueue(Ns_TaskQueue *queue) + NS_GNUC_NONNULL(1); + + NS_EXTERN Ns_Task * + Ns_TaskCreate(SOCKET sock, Ns_TaskProc *proc, void *arg) + NS_GNUC_NONNULL(2); + + NS_EXTERN int + Ns_TaskEnqueue(Ns_Task *task, Ns_TaskQueue *queue) + NS_GNUC_NONNULL(1) NS_GNUC_NONNULL(2); + + NS_EXTERN void + Ns_TaskRun(Ns_Task *task) + NS_GNUC_NONNULL(1); + + NS_EXTERN void + Ns_TaskCallback(Ns_Task *task, int when, Ns_Time *timeoutPtr) + NS_GNUC_NONNULL(1); + + NS_EXTERN void + Ns_TaskDone(Ns_Task *task) + NS_GNUC_NONNULL(1); + + NS_EXTERN int + Ns_TaskCancel(Ns_Task *task) + NS_GNUC_NONNULL(1); + + NS_EXTERN int + Ns_TaskWait(Ns_Task *task, Ns_Time *timeoutPtr) + NS_GNUC_NONNULL(1); + + NS_EXTERN SOCKET + Ns_TaskFree(Ns_Task *task) + NS_GNUC_NONNULL(1); + /* * tclobj.c: |