aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/notmuch.h
diff options
context:
space:
mode:
authorGravatar Austin Clements <amdragon@mit.edu>2011-01-29 11:25:24 -0500
committerGravatar David Bremner <bremner@debian.org>2011-09-23 21:50:38 -0400
commit957f1ba3fc1d737887029ff1787fc6bea94de00b (patch)
treeab4b2aab1067f4e40b4702afea5c837ee4270116 /lib/notmuch.h
parentfcd433709eff6b7f0fbbd1e5018ca0e37315ce26 (diff)
lib: Add notmuch_database_{begin,end}_atomic.
These operations translate into non-flushed Xapian transactions, allowing arbitrary groups of database operations to be performed atomically.
Diffstat (limited to 'lib/notmuch.h')
-rw-r--r--lib/notmuch.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/notmuch.h b/lib/notmuch.h
index 974be8d1..0c306bb5 100644
--- a/lib/notmuch.h
+++ b/lib/notmuch.h
@@ -214,6 +214,36 @@ notmuch_database_upgrade (notmuch_database_t *database,
double progress),
void *closure);
+/* Begin an atomic database operation.
+ *
+ * Any modifications performed between a successful begin and a
+ * notmuch_database_end_atomic will be applied to the database
+ * atomically. Note that, unlike a typical database transaction, this
+ * only ensures atomicity, not durability; neither begin nor end
+ * necessarily flush modifications to disk.
+ *
+ * Return value:
+ *
+ * NOTMUCH_STATUS_SUCCESS: Successfully entered atomic section.
+ *
+ * NOTMUCH_STATUS_XAPIAN_EXCEPTION: A Xapian exception occurred;
+ * atomic section not entered.
+ */
+notmuch_status_t
+notmuch_database_begin_atomic (notmuch_database_t *notmuch);
+
+/* Indicate the end of an atomic database operation.
+ *
+ * Return value:
+ *
+ * NOTMUCH_STATUS_SUCCESS: Successfully completed atomic section.
+ *
+ * NOTMUCH_STATUS_XAPIAN_EXCEPTION: A Xapian exception occurred;
+ * atomic section not ended.
+ */
+notmuch_status_t
+notmuch_database_end_atomic (notmuch_database_t *notmuch);
+
/* Retrieve a directory object from the database for 'path'.
*
* Here, 'path' should be a path relative to the path of 'database'