sync with 0.9.2cvs5
[claws.git] / src / common / session.h
index 6988148c1c1d2a389f0aa42a51b309fcafc5fb5d..3f4a0e11a0a8893aa01815f0f4fc400c296445d5 100644 (file)
 #include <glib.h>
 
 #include <time.h>
+#include <sys/time.h>
 #include <unistd.h>
 
 #include "socket.h"
 
+#define SESSION_BUFFSIZE       4096
+
 typedef struct _Session        Session;
 
 #define SESSION(obj)   ((Session *)obj)
 
 typedef enum {
+       SESSION_UNKNOWN,
        SESSION_IMAP,
        SESSION_NEWS,
        SESSION_SMTP,
@@ -94,14 +98,21 @@ struct _Session
        SessionState state;
 
        time_t last_access_time;
+       struct timeval tv_prev;
+
+       gint conn_id;
 
-       pid_t child_pid;
+       /* I/O channel for socket */
+       GIOChannel *sock_ch;
+       gint io_tag;
 
-       /* pipe I/O */
-       GIOChannel *read_ch;
-       GIOChannel *write_ch;
+       GString *read_buf;
+       GByteArray *read_data_buf;
+       gchar *read_data_terminator;
 
-       gint read_tag;
+       gchar *write_buf;
+       gchar *write_buf_p;
+       gint write_buf_len;
 
        gpointer data;
 
@@ -109,11 +120,11 @@ struct _Session
        gint (*recv_msg)                (Session        *session,
                                         const gchar    *msg);
 
+       gint (*send_data_finished)      (Session        *session,
+                                        guint           len);
        gint (*recv_data_finished)      (Session        *session,
                                         guchar         *data,
                                         guint           len);
-       gint (*send_data_finished)      (Session        *session,
-                                        guint           len);
 
        void (*destroy)                 (Session        *session);
 
@@ -156,18 +167,19 @@ void session_set_send_data_notify (Session        *session,
                                         SendDataNotify  notify_func,
                                         gpointer        data);
 
+#if USE_OPENSSL
+gint session_start_tls (Session        *session);
+#endif
+
 gint session_send_msg  (Session        *session,
                         SessionMsgType  type,
                         const gchar    *msg);
+gint session_recv_msg  (Session        *session);
 gint session_send_data (Session        *session,
                         const guchar   *data,
                         guint           size);
 gint session_recv_data (Session        *session,
                         guint           size,
-                        gboolean        unescape_dot);
-
-#if USE_OPENSSL
-gint session_start_tls (Session        *session);
-#endif
+                        const gchar    *terminator);
 
 #endif /* __SESSION_H__ */