Move the _notmuch_message_sync from private to public interfaces
authorCarl Worth <cworth@cworth.org>
Fri, 23 Oct 2009 12:18:35 +0000 (05:18 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 23 Oct 2009 12:20:03 +0000 (05:20 -0700)
The idea here is to allow internal users to see a non-synced message
object, (for example, while parsing a message file and incrementally
adding terms, etc.). We're willing to take the care to get the
improved performance.

But for the public interface, keeping everything synced will be much
less confusing, (reference lots of sup bugs that happen due to
message state being altered by the user but not synced to the database).

message.cc

index dd73d13c97fe06332850798f24de7d2012bf80cb..74a173e1ec2060d2bfbe7b2cc498cac5ddcfae85 100644 (file)
@@ -214,6 +214,13 @@ _notmuch_message_sync (notmuch_message_t *message)
     db->replace_document (message->doc_id, message->doc);
 }
 
+/* Add a name:value term to 'message', (the actual term will be
+ * encoded by prefixing the value with a short prefix). See
+ * NORMAL_PREFIX and BOOLEAN_PREFIX arrays for the mapping of term
+ * names to prefix values.
+ *
+ * This change will not be reflected in the database until the next
+ * call to _notmuch_message_set_sync. */
 notmuch_private_status_t
 _notmuch_message_add_term (notmuch_message_t *message,
                           const char *prefix_name,
@@ -232,13 +239,19 @@ _notmuch_message_add_term (notmuch_message_t *message,
        return NOTMUCH_PRIVATE_STATUS_TERM_TOO_LONG;
 
     message->doc.add_term (term);
-    _notmuch_message_sync (message);
 
     talloc_free (term);
 
     return NOTMUCH_PRIVATE_STATUS_SUCCESS;
 }
 
+/* Remove a name:value term from 'message', (the actual term will be
+ * encoded by prefixing the value with a short prefix). See
+ * NORMAL_PREFIX and BOOLEAN_PREFIX arrays for the mapping of term
+ * names to prefix values.
+ *
+ * This change will not be reflected in the database until the next
+ * call to _notmuch_message_set_sync. */
 notmuch_private_status_t
 _notmuch_message_remove_term (notmuch_message_t *message,
                              const char *prefix_name,
@@ -256,7 +269,6 @@ _notmuch_message_remove_term (notmuch_message_t *message,
        return NOTMUCH_PRIVATE_STATUS_TERM_TOO_LONG;
 
     message->doc.remove_term (term);
-    _notmuch_message_sync (message);
 
     talloc_free (term);
 
@@ -281,6 +293,8 @@ notmuch_message_add_tag (notmuch_message_t *message, const char *tag)
        exit (1);
     }
 
+    _notmuch_message_sync (message);
+
     return NOTMUCH_STATUS_SUCCESS;
 }
 
@@ -302,6 +316,8 @@ notmuch_message_remove_tag (notmuch_message_t *message, const char *tag)
        exit (1);
     }
 
+    _notmuch_message_sync (message);
+
     return NOTMUCH_STATUS_SUCCESS;
 }