diff options
author | Austin Clements <amdragon@mit.edu> | 2011-01-29 11:25:24 -0500 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2011-09-23 21:50:38 -0400 |
commit | 957f1ba3fc1d737887029ff1787fc6bea94de00b (patch) | |
tree | ab4b2aab1067f4e40b4702afea5c837ee4270116 /lib/notmuch.h | |
parent | fcd433709eff6b7f0fbbd1e5018ca0e37315ce26 (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.h | 30 |
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' |