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
|
#TODO: catch exceptions, document return values and etc
|
||||||
return status
|
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):
|
def get_directory(self, path):
|
||||||
"""Returns a :class:`Directory` of path,
|
"""Returns a :class:`Directory` of path,
|
||||||
(creating it if it does not exist(?))
|
(creating it if it does not exist(?))
|
||||||
|
|
|
@ -65,6 +65,7 @@ STATUS = Status(['SUCCESS',
|
||||||
'NULL_POINTER',
|
'NULL_POINTER',
|
||||||
'TAG_TOO_LONG',
|
'TAG_TOO_LONG',
|
||||||
'UNBALANCED_FREEZE_THAW',
|
'UNBALANCED_FREEZE_THAW',
|
||||||
|
'UNBALANCED_ATOMIC',
|
||||||
'NOT_INITIALIZED'])
|
'NOT_INITIALIZED'])
|
||||||
"""STATUS is a class, whose attributes provide constants that serve as return
|
"""STATUS is a class, whose attributes provide constants that serve as return
|
||||||
indicators for notmuch functions. Currently the following ones are defined. For
|
indicators for notmuch functions. Currently the following ones are defined. For
|
||||||
|
@ -81,6 +82,7 @@ description.
|
||||||
* NULL_POINTER
|
* NULL_POINTER
|
||||||
* TAG_TOO_LONG
|
* TAG_TOO_LONG
|
||||||
* UNBALANCED_FREEZE_THAW
|
* UNBALANCED_FREEZE_THAW
|
||||||
|
* UNBALANCED_ATOMIC
|
||||||
* NOT_INITIALIZED
|
* NOT_INITIALIZED
|
||||||
|
|
||||||
Invoke the class method `notmuch.STATUS.status2str` with a status value as
|
Invoke the class method `notmuch.STATUS.status2str` with a status value as
|
||||||
|
|
Loading…
Reference in a new issue