]> code.citadel.org Git - citadel.git/blobdiff - citadel/server.h
* Removed all of the thread cancellation cruft that is no longer necessary
[citadel.git] / citadel / server.h
index f12c23fcafcff0373125b5ea81f359e47d2e88e1..72dc9f4d647293c588d6865401d2c172633beb1a 100644 (file)
@@ -1,12 +1,24 @@
 /* $Id$ */
-typedef pthread_t THREAD;
 
 /* Uncomment this if you want to track memory leaks.
  * This incurs some overhead, so don't use it unless you're debugging the code!
  */
 #define DEBUG_MEMORY_LEAKS
 
-struct CtdlMessage;
+/*
+ * New format for a message in memory
+ */
+#define        CTDLMESSAGE_MAGIC               0x159d
+struct CtdlMessage {
+       int cm_magic;                   /* Self-check */
+       char cm_anon_type;              /* Anonymous or author-visible */
+       char cm_format_type;            /* Format type */
+       char *cm_fields[256];           /* Data fields */
+       unsigned int cm_flags;          /* How to handle (NOT SAVED TO DISK) */
+};
+
+#define        CM_SKIP_HOOKS   0x01            /* Don't run server-side handlers */
+
 
 /*
  * Generic per-session variable or data structure storage
@@ -23,6 +35,7 @@ struct CtdlSessData {
 enum {
        SYM_DESIRED_SECTION,            /* Used by the MIME parser */
        SYM_MA_INFO,                    /* Handles multipart/alternative */
+       SYM_REPL,                       /* Used for replication checking */
        SYM_MAX
 };
 
@@ -42,6 +55,8 @@ struct CitContext {
        struct usersupp usersupp;       /* Database record buffers */
        struct quickroom quickroom;
 
+       int state;              /* thread state (see CON_ values below) */
+
        char curr_user[32];     /* name of current user */
        int logged_in;          /* logged in */
        int internal_pgm;       /* authenticated as internal program */
@@ -49,11 +64,8 @@ struct CitContext {
        int nologin;            /* not allowed to log in */
 
        char net_node[32];
-       THREAD mythread;
-       int n_crit;             /* number of critical sections open */
        int client_socket;
        int cs_pid;             /* session ID */
-       char cs_room[ROOMNAMELEN];      /* current room */
        time_t cs_lastupdt;     /* time of last update */
        time_t lastcmd;         /* time of last command executed */
        time_t lastidle;        /* For computing idle time */
@@ -90,6 +102,14 @@ struct CitContext {
 
 typedef struct CitContext t_context;
 
+/* Values for CitContext.state */
+enum {
+       CON_IDLE,               /* This context is doing nothing */
+       CON_EXECUTING,          /* This context is bound to a thread */
+       CON_DYING               /* This context is being terminated */
+};
+
+
 #define CS_STEALTH     1       /* stealth mode */
 #define CS_CHAT                2       /* chat mode */
 #define CS_POSTING     4       /* Posting */
@@ -140,6 +160,7 @@ enum {
        S_DATABASE,
        S_NETDB,
        S_SUPPMSGMAIN,
+       S_I_WANNA_SELECT,
        MAX_SEMAPHORES
 };
 
@@ -363,17 +384,6 @@ struct ser_ret {
 };
 
 
-/*
- * New format for a message in memory
- */
-#define        CTDLMESSAGE_MAGIC               0x159d
-struct CtdlMessage {
-       int cm_magic;                   /* Self-check */
-       char cm_anon_type;              /* Anonymous or author-visible */
-       char cm_format_type;            /* Format type */
-       char *cm_fields[256];           /* Data fields */
-};
-
 /* Preferred field order */
 /*               *********                     Important fields */
 /*                        ****************     Semi-important fields */