evolution-data-server r9520 - branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi
- From: jjohnny svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r9520 - branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi
- Date: Thu, 11 Sep 2008 07:27:45 +0000 (UTC)
Author: jjohnny
Date: Thu Sep 11 07:27:45 2008
New Revision: 9520
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9520&view=rev
Log:
Initial changes for the new cool db-summary.
Modified:
branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/ChangeLog
branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-folder.c
branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-summary.c
Modified: branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-folder.c
==============================================================================
--- branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-folder.c (original)
+++ branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-folder.c Thu Sep 11 07:27:45 2008
@@ -143,7 +143,7 @@
}
camel_store_summary_info_free ((CamelStoreSummary *)((CamelMapiStore *)folder->parent_store)->summary, si);
}
- camel_folder_summary_save (folder->summary);
+ camel_folder_summary_save_to_db (folder->summary, ex);
camel_store_summary_save ((CamelStoreSummary *)((CamelMapiStore *)folder->parent_store)->summary);
} else {
/* We probably could not get the messages the first time. (get_folder) failed???!
@@ -314,7 +314,7 @@
static void
mapi_sync_summary (CamelFolder *folder, CamelException *ex)
{
- camel_folder_summary_save (folder->summary);
+ camel_folder_summary_save_to_db (folder->summary, ex);
camel_store_summary_touch ((CamelStoreSummary *)((CamelMapiStore *)folder->parent_store)->summary);
camel_store_summary_save ((CamelStoreSummary *)((CamelMapiStore *)folder->parent_store)->summary);
}
Modified: branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-summary.c
==============================================================================
--- branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-summary.c (original)
+++ branches/EXCHANGE_MAPI_BRANCH/camel/providers/mapi/camel-mapi-summary.c Thu Sep 11 07:27:45 2008
@@ -35,16 +35,18 @@
#include "camel-mapi-folder.h"
#include "camel-mapi-summary.h"
+/* Macros for DB Summary */
+#define MS_EXTRACT_FIRST_DIGIT(val) val=strtoul (part, &part, 10);
+
/*Prototypes*/
-static int mapi_summary_header_load (CamelFolderSummary *, FILE *);
-static int mapi_summary_header_save (CamelFolderSummary *, FILE *);
+static int mapi_summary_header_to_db (CamelFolderSummary *, CamelException *ex);
+static int mapi_summary_header_from_db (CamelFolderSummary *, CamelFIRecord *fir);
-static CamelMessageInfo *mapi_message_info_load (CamelFolderSummary *s, FILE *in) ;
+static CamelMessageInfo *mapi_message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir) ;
+static CamelMIRecord *mapi_message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info) ;
-static int mapi_message_info_save (CamelFolderSummary *s, FILE *out, CamelMessageInfo *info) ;
-static CamelMessageContentInfo * mapi_content_info_load (CamelFolderSummary *s, FILE *in) ;
-static int mapi_content_info_save (CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *info) ;
-static gboolean mapi_info_set_flags(CamelMessageInfo *info, guint32 flags, guint32 set);
+static CamelMessageContentInfo * mapi_content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir) ;
+static int mapi_content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir) ;
static void camel_mapi_summary_class_init (CamelMapiSummaryClass *klass);
static void camel_mapi_summary_init (CamelMapiSummary *obj);
@@ -98,12 +100,13 @@
camel_mapi_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type()));
cfs_class->message_info_clone = mapi_message_info_clone ;
- cfs_class->summary_header_load = mapi_summary_header_load;
- cfs_class->summary_header_save = mapi_summary_header_save;
- cfs_class->message_info_load = mapi_message_info_load;
- cfs_class->message_info_save = mapi_message_info_save;
- cfs_class->content_info_load = mapi_content_info_load;
- cfs_class->content_info_save = mapi_content_info_save;
+
+ cfs_class->summary_header_to_db = mapi_summary_header_to_db;
+ cfs_class->summary_header_from_db = mapi_summary_header_from_db;
+ cfs_class->message_info_to_db = mapi_message_info_to_db;
+ cfs_class->message_info_from_db = mapi_message_info_from_db;
+ cfs_class->content_info_to_db = mapi_content_info_to_db;
+ cfs_class->content_info_from_db = mapi_content_info_from_db;
}
@@ -133,75 +136,94 @@
CamelFolderSummary *
camel_mapi_summary_new (struct _CamelFolder *folder, const char *filename)
{
+ CamelException ex;
+
CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (
camel_object_new (camel_mapi_summary_get_type ()));
+
+ camel_exception_init (&ex);
summary->folder = folder ;
camel_folder_summary_set_build_content (summary, TRUE);
camel_folder_summary_set_filename (summary, filename);
- if (camel_folder_summary_load (summary) == -1) {
- camel_folder_summary_clear (summary);
- camel_folder_summary_touch (summary);
+ if (camel_folder_summary_load_from_db (summary, &ex) == -1) {
+ /* FIXME: Isn't this dangerous ? We clear the summary
+ if it cannot be loaded, for some random reason.
+ We need to pass the ex and find out why it is not loaded etc. ? */
+ camel_folder_summary_clear_db (summary);
+ g_warning ("Unable to load summary %s\n", camel_exception_get_description (&ex));
+ camel_exception_clear (&ex);
}
return summary;
}
static int
-mapi_summary_header_load (CamelFolderSummary *summary, FILE *in)
+mapi_summary_header_from_db (CamelFolderSummary *summary, CamelFIRecord *fir)
{
- if (camel_mapi_summary_parent->summary_header_load (summary, in) == -1)
+ if (camel_mapi_summary_parent->summary_header_from_db (summary, fir) == -1)
return -1 ;
return 0;
}
static int
-mapi_summary_header_save (CamelFolderSummary *summary, FILE *out)
+mapi_summary_header_to_db (CamelFolderSummary *summary, CamelException *ex)
{
- if (camel_mapi_summary_parent->summary_header_save (summary, out) == -1)
+ if (camel_mapi_summary_parent->summary_header_to_db (summary, ex) == -1)
return -1;
return 0;
}
static CamelMessageInfo*
-mapi_message_info_load (CamelFolderSummary *s, FILE *in)
+mapi_message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
{
CamelMessageInfo *info ;
- info = camel_mapi_summary_parent->message_info_load(s,in) ;
+ info = camel_mapi_summary_parent->message_info_from_db (s, mir) ;
return info ;
}
-static int
-mapi_message_info_save (CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
+static CamelMIRecord *
+mapi_message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
{
- if (camel_mapi_summary_parent->message_info_save (s, out, info) == -1)
- return -1;
+ CamelMapiMessageInfo *minfo = (CamelMapiMessageInfo *)info;
+ struct _CamelMIRecord *mir;
- return 0;
+ mir = camel_mapi_summary_parent->message_info_to_db (s, info);
+
+ return mir;
}
static CamelMessageContentInfo*
-mapi_content_info_load (CamelFolderSummary *s, FILE *in)
+mapi_content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
{
+ char *part = mir->cinfo;
+ guint32 type=0;
+
+ if (part)
+ MS_EXTRACT_FIRST_DIGIT (type);
- if (fgetc (in))
- return camel_mapi_summary_parent->content_info_load (s, in);
+ mir->cinfo = part;
+
+ if (type)
+ return camel_mapi_summary_parent->content_info_from_db (s, mir);
else
return camel_folder_summary_content_info_new (s);
}
static int
-mapi_content_info_save (CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *info)
+mapi_content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir)
{
if (info->type) {
- fputc (1, out);
- return camel_mapi_summary_parent->content_info_save (s, out, info);
- } else
- return fputc (0, out);
+ mir->cinfo = g_strdup ("1");
+ return camel_mapi_summary_parent->content_info_to_db (s, info, mir);
+ } else {
+ mir->cinfo = g_strdup ("0");
+ return 0;
+ }
}
void
@@ -209,6 +231,7 @@
{
CamelFolderChangeInfo *changes;
CamelMessageInfo *info;
+ CamelException ex;
int i, count;
const char *uid;
@@ -225,7 +248,9 @@
}
camel_folder_summary_clear (summary);
- camel_folder_summary_save (summary);
+ camel_exception_init (&ex);
+ /*TODO : Test exception */
+ camel_folder_summary_save_to_db (summary, &ex);
if (uncache)
camel_data_cache_clear (((CamelMapiFolder *) summary->folder)->cache, "cache", NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]