#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,
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;
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);
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__ */