[evolution-data-server] Add camel_imapx_folder_process_status_response().



commit 3f643ffe29ca31323a3101256d75cadcd81dd5bb
Author: Matthew Barnes <mbarnes redhat com>
Date:   Thu Aug 8 15:12:42 2013 +0200

    Add camel_imapx_folder_process_status_response().
    
    Updates the folder's local status information from the STATUS response.

 camel/camel-imapx-folder.c              |   29 +++++++++++++++++++++++++++++
 camel/camel-imapx-folder.h              |    5 +++++
 camel/camel-imapx-server.c              |   15 ++-------------
 docs/reference/camel/camel-sections.txt |    1 +
 4 files changed, 37 insertions(+), 13 deletions(-)
---
diff --git a/camel/camel-imapx-folder.c b/camel/camel-imapx-folder.c
index b3ce6c0..dabd397 100644
--- a/camel/camel-imapx-folder.c
+++ b/camel/camel-imapx-folder.c
@@ -1262,3 +1262,32 @@ camel_imapx_folder_add_move_to_real_trash (CamelIMAPXFolder *folder,
        g_mutex_unlock (&folder->priv->move_to_hash_table_lock);
 }
 
+/**
+ * camel_imapx_folder_process_status_response:
+ * @folder: a #CamelIMAPXFolder
+ * @response: a #CamelIMAPXStatusResponse
+ *
+ * Updates @folder's local status information from @response.
+ *
+ * Since: 3.10
+ **/
+void
+camel_imapx_folder_process_status_response (CamelIMAPXFolder *folder,
+                                            CamelIMAPXStatusResponse *response)
+{
+       g_return_if_fail (CAMEL_IS_IMAPX_FOLDER (folder));
+       g_return_if_fail (CAMEL_IS_IMAPX_STATUS_RESPONSE (response));
+
+       /* XXX Should be using some sort of locking here. */
+
+       folder->exists_on_server =
+               camel_imapx_status_response_get_messages (response);
+       folder->unread_on_server =
+               camel_imapx_status_response_get_unseen (response);
+       folder->uidnext_on_server =
+               camel_imapx_status_response_get_uidnext (response);
+       folder->uidvalidity_on_server =
+               camel_imapx_status_response_get_uidvalidity (response);
+       folder->modseq_on_server =
+               camel_imapx_status_response_get_highestmodseq (response);
+}
diff --git a/camel/camel-imapx-folder.h b/camel/camel-imapx-folder.h
index ab26a9e..4322983 100644
--- a/camel/camel-imapx-folder.h
+++ b/camel/camel-imapx-folder.h
@@ -33,6 +33,8 @@
 #include <camel/camel-folder-search.h>
 #include <camel/camel-store.h>
 
+#include <camel/camel-imapx-status-response.h>
+
 /* Standard GObject macros */
 #define CAMEL_TYPE_IMAPX_FOLDER \
        (camel_imapx_folder_get_type ())
@@ -101,6 +103,9 @@ void                camel_imapx_folder_add_move_to_real_junk
 void           camel_imapx_folder_add_move_to_real_trash
                                                (CamelIMAPXFolder *folder,
                                                 const gchar *message_uid);
+void           camel_imapx_folder_process_status_response
+                                               (CamelIMAPXFolder *folder,
+                                                CamelIMAPXStatusResponse *response);
 
 G_END_DECLS
 
diff --git a/camel/camel-imapx-server.c b/camel/camel-imapx-server.c
index e27d9b3..301dcf5 100644
--- a/camel/camel-imapx-server.c
+++ b/camel/camel-imapx-server.c
@@ -2243,11 +2243,7 @@ imapx_untagged_status (CamelIMAPXServer *is,
        CamelIMAPXStore *store;
        CamelFolder *folder = NULL;
        const gchar *mailbox;
-       guint32 messages;
-       guint32 uidnext;
        guint32 uidvalidity;
-       guint32 unseen;
-       guint64 highestmodseq;
        GError *local_error = NULL;
 
        g_return_val_if_fail (CAMEL_IS_IMAPX_SERVER (is), FALSE);
@@ -2258,11 +2254,7 @@ imapx_untagged_status (CamelIMAPXServer *is,
                return FALSE;
 
        mailbox = camel_imapx_status_response_get_mailbox (response);
-       messages = camel_imapx_status_response_get_messages (response);
-       uidnext = camel_imapx_status_response_get_uidnext (response);
        uidvalidity = camel_imapx_status_response_get_uidvalidity (response);
-       unseen = camel_imapx_status_response_get_unseen (response);
-       highestmodseq = camel_imapx_status_response_get_highestmodseq (response);
 
        store = camel_imapx_server_ref_store (is);
 
@@ -2294,11 +2286,8 @@ imapx_untagged_status (CamelIMAPXServer *is,
                imapx_summary = CAMEL_IMAPX_SUMMARY (folder->summary);
 
                imapx_folder = CAMEL_IMAPX_FOLDER (folder);
-               imapx_folder->exists_on_server = messages;
-               imapx_folder->unread_on_server = unseen;
-               imapx_folder->modseq_on_server = highestmodseq;
-               imapx_folder->uidvalidity_on_server = uidvalidity;
-               imapx_folder->uidnext_on_server = uidnext;
+               camel_imapx_folder_process_status_response (
+                       imapx_folder, response);
 
                if (uidvalidity > 0 && uidvalidity != imapx_summary->validity)
                        invalidate_local_cache (imapx_folder, uidvalidity);
diff --git a/docs/reference/camel/camel-sections.txt b/docs/reference/camel/camel-sections.txt
index 50e3516..430eef1 100644
--- a/docs/reference/camel/camel-sections.txt
+++ b/docs/reference/camel/camel-sections.txt
@@ -778,6 +778,7 @@ camel_imapx_folder_dup_quota_root_names
 camel_imapx_folder_set_quota_root_names
 camel_imapx_folder_add_move_to_real_junk
 camel_imapx_folder_add_move_to_real_trash
+camel_imapx_folder_process_status_response
 <SUBSECTION Standard>
 CAMEL_IMAPX_FOLDER
 CAMEL_IS_IMAPX_FOLDER


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