mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
python: add begin|end_atomic bindings
* Add UNBALANCED_ATOMIC status code Catch up with the notmuch status codes, and add the UNBALANCED_ATOMIC one. * Add the begin_atomic and end_atomic calls to libnotmuch Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
parent
2c76279cda
commit
0241a68e9e
2 changed files with 45 additions and 0 deletions
|
@ -221,6 +221,49 @@ class Database(object):
|
|||
#TODO: catch exceptions, document return values and etc
|
||||
return status
|
||||
|
||||
def begin_atomic(self):
|
||||
"""Begin an atomic database operation
|
||||
|
||||
Any modifications performed between a successful
|
||||
:meth:`begin_atomic` and a :meth:`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.
|
||||
|
||||
:returns: STATUS.SUCCESS or raises
|
||||
|
||||
:exception: :exc:`NotmuchError` STATUS.XAPIAN_EXCEPTION::
|
||||
|
||||
A Xapian exception occurred; atomic section not
|
||||
entered."""
|
||||
# Raise a NotmuchError if not initialized
|
||||
self._verify_initialized_db()
|
||||
status = nmlib.notmuch_database_begin_atomic(self._db)
|
||||
if status != STATUS.SUCCESS:
|
||||
raise NotmuchError(status)
|
||||
return status
|
||||
|
||||
def end_atomic(self):
|
||||
"""Indicate the end of an atomic database operation
|
||||
|
||||
See :meth:`begin_atomic` for details.
|
||||
|
||||
:returns: STATUS.SUCCESS or raises
|
||||
|
||||
:exception:
|
||||
:exc:`NotmuchError`:
|
||||
STATUS.XAPIAN_EXCEPTION
|
||||
A Xapian exception occurred; atomic section not
|
||||
ended.
|
||||
STATUS.UNBALANCED_ATOMIC:
|
||||
end_atomic has been called more times than begin_atomic."""
|
||||
# Raise a NotmuchError if not initialized
|
||||
self._verify_initialized_db()
|
||||
status = nmlib.notmuch_database_end_atomic(self._db)
|
||||
if status != STATUS.SUCCESS:
|
||||
raise NotmuchError(status)
|
||||
return status
|
||||
|
||||
def get_directory(self, path):
|
||||
"""Returns a :class:`Directory` of path,
|
||||
(creating it if it does not exist(?))
|
||||
|
|
|
@ -65,6 +65,7 @@ STATUS = Status(['SUCCESS',
|
|||
'NULL_POINTER',
|
||||
'TAG_TOO_LONG',
|
||||
'UNBALANCED_FREEZE_THAW',
|
||||
'UNBALANCED_ATOMIC',
|
||||
'NOT_INITIALIZED'])
|
||||
"""STATUS is a class, whose attributes provide constants that serve as return
|
||||
indicators for notmuch functions. Currently the following ones are defined. For
|
||||
|
@ -81,6 +82,7 @@ description.
|
|||
* NULL_POINTER
|
||||
* TAG_TOO_LONG
|
||||
* UNBALANCED_FREEZE_THAW
|
||||
* UNBALANCED_ATOMIC
|
||||
* NOT_INITIALIZED
|
||||
|
||||
Invoke the class method `notmuch.STATUS.status2str` with a status value as
|
||||
|
|
Loading…
Reference in a new issue