evolution-data-server r8882 - in branches/camel-db-summary/camel/providers: groupwise imap



Author: sragavan
Date: Sun Jun  1 15:08:59 2008
New Revision: 8882
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=8882&view=rev

Log:
Complete IMAP and wrote basic GW support for CamelDS.


Modified:
   branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c
   branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c

Modified: branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c	(original)
+++ branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c	Sun Jun  1 15:08:59 2008
@@ -53,6 +53,14 @@
 static int gw_content_info_save (CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *info) ;
 static gboolean gw_info_set_flags(CamelMessageInfo *info, guint32 flags, guint32 set);		
 
+static int summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir);
+static CamelFIRecord * summary_header_to_db (CamelFolderSummary *s);
+static CamelMIRecord * message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info);
+static CamelMessageInfo * message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+static int content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir);
+static CamelMessageContentInfo * content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+
+
 static void camel_groupwise_summary_class_init (CamelGroupwiseSummaryClass *klass);
 static void camel_groupwise_summary_init       (CamelGroupwiseSummary *obj);
 
@@ -64,6 +72,8 @@
 
 
 CamelType
+#include <fcntl.h>
+#include <fcntl.h>
 camel_groupwise_summary_get_type (void)
 {
 	static CamelType type = CAMEL_INVALID_TYPE;
@@ -112,6 +122,14 @@
 	cfs_class->content_info_load = gw_content_info_load;
 	cfs_class->content_info_save = gw_content_info_save;
 	cfs_class->info_set_flags = gw_info_set_flags;
+
+	cfs_class->summary_header_to_db = summary_header_to_db;
+	cfs_class->summary_header_from_db = summary_header_from_db;
+	cfs_class->message_info_to_db = message_info_to_db;
+	cfs_class->message_info_from_db = message_info_from_db;
+	cfs_class->content_info_to_db = content_info_to_db;
+	cfs_class->content_info_from_db = content_info_from_db;
+	
 }
 
 
@@ -157,6 +175,12 @@
 }
 
 static int
+summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir)
+{
+	return 0;
+}
+
+static int
 gw_summary_header_load (CamelFolderSummary *s, FILE *in)
 {
 	CamelGroupwiseSummary *ims = CAMEL_GROUPWISE_SUMMARY (s);
@@ -173,6 +197,13 @@
 	return 0 ;
 }
 
+static CamelFIRecord *
+summary_header_to_db (CamelFolderSummary *s)
+{
+	CamelFIRecord *fir;
+	GString *str = g_string_new (NULL);
+	
+}
 
 static int
 gw_summary_header_save (CamelFolderSummary *s, FILE *out)

Modified: branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c	(original)
+++ branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c	Sun Jun  1 15:08:59 2008
@@ -38,6 +38,9 @@
 
 #define CAMEL_IMAP_SUMMARY_VERSION (3)
 
+#define EXTRACT_FIRST_DIGIT(val) val=strtoul (part, &part, 10);
+#define EXTRACT_DIGIT(val) part++; val=strtoul (part, &part, 10);
+
 static int summary_header_load (CamelFolderSummary *, FILE *);
 static int summary_header_save (CamelFolderSummary *, FILE *);
 
@@ -49,6 +52,14 @@
 static int content_info_save (CamelFolderSummary *s, FILE *out,
 			      CamelMessageContentInfo *info);
 
+static int summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir);
+static CamelFIRecord * summary_header_to_db (CamelFolderSummary *s);
+static CamelMIRecord * message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info);
+static CamelMessageInfo * message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+static int content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir);
+static CamelMessageContentInfo * content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+
+
 static void camel_imap_summary_class_init (CamelImapSummaryClass *klass);
 static void camel_imap_summary_init       (CamelImapSummary *obj);
 
@@ -103,6 +114,13 @@
 	cfs_class->message_info_save = message_info_save;
 	cfs_class->content_info_load = content_info_load;
 	cfs_class->content_info_save = content_info_save;
+	
+	cfs_class->summary_header_to_db = summary_header_to_db;
+	cfs_class->summary_header_from_db = summary_header_from_db;
+	cfs_class->message_info_to_db = message_info_to_db;
+	cfs_class->message_info_from_db = message_info_from_db;
+	cfs_class->content_info_to_db = content_info_to_db;
+	cfs_class->content_info_from_db = content_info_from_db;
 
 	cfs_class->info_set_user_flag = info_set_user_flag;
 }
@@ -146,6 +164,34 @@
 }
 
 static int
+summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir)
+{
+	CamelImapSummary *ims = CAMEL_IMAP_SUMMARY (s);
+	char *part;
+
+	if (camel_imap_summary_parent->summary_header_from_db (s, mir) == -1)
+		return -1;
+
+	part = mir->bdata;
+
+	if (part) {
+		EXTRACT_FIRST_DIGIT (ims->version)
+	}
+	
+	if (part) {
+		EXTRACT_DIGIT (ims->validity)
+	}
+	
+	if (ims->version > CAMEL_IMAP_SUMMARY_VERSION) {
+		g_warning("Unkown summary version\n");
+		errno = EINVAL;
+		return -1;
+	}
+
+	return 0;
+}
+
+static int
 summary_header_load (CamelFolderSummary *s, FILE *in)
 {
 	CamelImapSummary *ims = CAMEL_IMAP_SUMMARY (s);
@@ -181,6 +227,25 @@
 	return 0;
 }
 
+static CamelFIRecord *
+summary_header_to_db (CamelFolderSummary *s)
+{
+	CamelImapSummary *ims = CAMEL_IMAP_SUMMARY(s);
+	struct _CamelFIRecord *fir;
+	GString *str = g_string_new (NULL);
+	
+	fir = camel_imap_summary_parent->summary_header_to_db (s);
+	if (!fir)
+		return NULL;
+
+	g_string_append_printf (str, "%d %u", CAMEL_IMAP_SUMMARY_VERSION, ims->validity);
+
+	fir->bdata = str->str;
+	g_string_free (str, FALSE);
+
+	return fir;
+}
+
 static int
 summary_header_save (CamelFolderSummary *s, FILE *out)
 {
@@ -195,6 +260,22 @@
 }
 
 static CamelMessageInfo *
+message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
+{
+	CamelMessageInfo *info;
+	CamelImapMessageInfo *iinfo;
+
+	info = camel_imap_summary_parent->message_info_from_db (s, mir);
+	if (info) {
+		char *part = mir->bdata;
+		iinfo = (CamelImapMessageInfo *)info;
+		EXTRACT_FIRST_DIGIT (iinfo->server_flags)
+	}
+
+	return info;
+}
+
+static CamelMessageInfo *
 message_info_load (CamelFolderSummary *s, FILE *in)
 {
 	CamelMessageInfo *info;
@@ -214,6 +295,19 @@
 	return NULL;
 }
 
+static CamelMIRecord *
+message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
+{
+	CamelImapMessageInfo *iinfo = (CamelImapMessageInfo *)info;
+	struct _CamelMIRecord *mir;
+
+	mir = camel_imap_summary_parent->message_info_to_db (s, info);
+	if (mir) 
+		mir->bdata = g_strdup_printf ("%u", iinfo->server_flags);
+
+	return mir;
+}
+
 static int
 message_info_save (CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
 {
@@ -240,6 +334,21 @@
 }
 
 static CamelMessageContentInfo *
+content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
+{
+	char *part = mir->cinfo;
+	guint32 type=0;
+	
+	if (part) {
+		EXTRACT_FIRST_DIGIT (type);
+	}
+	if (type)
+		return camel_imap_summary_parent->content_info_from_db (s, mir);
+	else
+		return camel_folder_summary_content_info_new (s);
+}
+
+static CamelMessageContentInfo *
 content_info_load (CamelFolderSummary *s, FILE *in)
 {
 	if (fgetc (in))
@@ -249,6 +358,18 @@
 }
 
 static int
+content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir)
+{
+	if (info->type) {
+		mir->cinfo = g_strdup ("1");
+		return camel_imap_summary_parent->content_info_to_db (s, info, mir);
+	} else {
+		mir->cinfo = g_strdup ("0");
+		return 0;
+	}
+}
+
+static int
 content_info_save (CamelFolderSummary *s, FILE *out,
 		   CamelMessageContentInfo *info)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]