Logging: add timestamps for eventdriven IO
[citadel.git] / citadel / context.h
index 4c7c117a5dee4488b4d089522917ead43f6c495a..08de75bb336a3b8d4b18161727c06cccbcdda53d 100644 (file)
@@ -42,6 +42,7 @@ struct CitContext {
 
        int cs_pid;             /* session ID */
        int dont_term;          /* for special activities like artv so we don't get killed */
+       double created;      /* time of birth */
        time_t lastcmd;         /* time of last command executed */
        time_t lastidle;        /* For computing idle time */
        CCState state;          /* thread state (see CON_ values below) */
@@ -58,6 +59,7 @@ struct CitContext {
        int is_local_socket;    /* set to 1 if client is on unix domain sock */
        /* Redirect this session's output to a memory buffer? */
        StrBuf *redirect_buffer;                /* the buffer */
+       StrBuf *StatusMessage;
 #ifdef HAVE_OPENSSL
        SSL *ssl;
        int redirect_ssl;
@@ -128,6 +130,7 @@ struct CitContext {
        struct cit_ical *CIT_ICAL;              /* calendaring data */
        struct ma_info *ma;                     /* multipart/alternative data */
        const char *ServiceName;                /* readable purpose of this session */
+       long tcp_port;
        void *openid_data;                      /* Data stored by the OpenID module */
        char *ldap_dn;                          /* DN of user when using AUTHMODE_LDAP */
 
@@ -136,6 +139,7 @@ struct CitContext {
        void (*h_greeting_function) (void) ;    /* greeting function for session startup */
 
        long *cached_msglist;                   /* results of the previous CtdlForEachMessage() */
+       int cached_num_msgs;
 };
 
 typedef struct CitContext CitContext;
@@ -144,7 +148,7 @@ typedef struct CitContext CitContext;
 #define CC MyContext()
 
 
-extern citthread_key_t MyConKey;                       /* TSD key for MyContext() */
+extern pthread_key_t MyConKey;                 /* TSD key for MyContext() */
 extern int num_sessions;
 extern CitContext masterCC;
 extern CitContext *ContextList;
@@ -161,7 +165,7 @@ void set_async_waiting(struct CitContext *ccptr);
 CitContext *CloneContext(CitContext *CloneMe);
 
 /* forcibly close and flush fd's on shutdown */
-void terminate_stuck_sessions(void);
+void terminate_all_sessions(void);
 
 /* Deprecated, user CtdlBumpNewMailCounter() instead */
 void BumpNewMailCounter(long) __attribute__ ((deprecated));
@@ -181,7 +185,7 @@ static INLINE void become_session(CitContext *which_con) {
 /*
        pid_t tid = syscall(SYS_gettid);
 */
-       citthread_setspecific(MyConKey, (void *)which_con );
+       pthread_setspecific(MyConKey, (void *)which_con );
 /*
        syslog(LOG_DEBUG, "[%d]: Now doing %s\n", 
                      (int) tid,