summaryrefslogtreecommitdiff
path: root/message.cc
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2009-10-23 05:18:35 -0700
committerCarl Worth <cworth@cworth.org>2009-10-23 05:20:03 -0700
commit97775ef438a6015c63d6a5cf25f85937153cde59 (patch)
tree414a12d506e52f1ca505b2bd5cef845f318c73b9 /message.cc
parent1ecdef59f5f3b5b1e9f00bbf27349fd5d48d747f (diff)
Move the _notmuch_message_sync from private to public interfaces
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).
Diffstat (limited to 'message.cc')
-rw-r--r--message.cc20
1 files changed, 18 insertions, 2 deletions
diff --git a/message.cc b/message.cc
index dd73d13..74a173e 100644
--- a/message.cc
+++ b/message.cc
@@ -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;
}