257 lines
9.6 KiB
Plaintext
257 lines
9.6 KiB
Plaintext
dnl $Id: m4.err,v 10.146 2007/10/24 16:06:07 bostic Exp $
|
|
dnl
|
|
dnl ###################################################################
|
|
dnl m4_err_mem_insufficient --
|
|
dnl Inline error for insufficient memory to return a key/data pair.
|
|
dnl ###################################################################
|
|
define(m4_err_mem_insufficient, [dnl
|
|
ifelse(M4EXCEPT, except_only,
|
|
[and a m4_ref(DbMemoryException) is thrown],
|
|
[and the error DB_BUFFER_SMALL is returned])])
|
|
dnl ###################################################################
|
|
dnl General errors:
|
|
dnl
|
|
dnl There are 3 cases: the C API, which just returns errors, the C++ API
|
|
dnl which either throws exceptions or returns errors, and the XML API which
|
|
dnl just throws exceptions.
|
|
dnl
|
|
dnl #1: API name
|
|
dnl #2: Variadic list of errors.
|
|
dnl
|
|
dnl Some errors are well-known, and can either throw an exception or be
|
|
dnl a normal return: buffersmall, deadlock, filenotfound, memory. In this
|
|
dnl case, we immediately output the error for C, and save up the output for
|
|
dnl C++, because we list exceptions after the laundry list of error returns.
|
|
dnl
|
|
dnl If the error isn't well-known, it's expected to be in pairs: the error
|
|
dnl followed by the string associated with it.
|
|
dnl ###################################################################
|
|
define(m4_err, [dnl
|
|
define([__m4_errapi], [m4_refT($1)])
|
|
define([__m4_errneedheader], yes)
|
|
m4_header(Errors)
|
|
__m4_errloop(shift($@))
|
|
undivert(1)])
|
|
define(m4_errstr, [dnl
|
|
define([__m4_errapi], [$1])
|
|
define([__m4_errneedheader], yes)
|
|
m4_header(Errors)
|
|
__m4_errloop(shift($@))
|
|
undivert(1)])
|
|
dnl
|
|
dnl ###################################################################
|
|
dnl __m4_errheader
|
|
dnl If we need header text, output it, but only once.
|
|
dnl ###################################################################
|
|
define(__m4_errheader, [ifelse(__m4_errneedheader, yes, [m4_p([dnl
|
|
The __m4_errapi
|
|
ifelse(M4EXCEPT, except_return,
|
|
[may fail and throw
|
|
ifelse(M4PRODUCT, XML, m4_ref(XmlException)[,], m4_ref(DbException)[,])
|
|
encapsulating one of the following non-zero errors, or return one of
|
|
the following non-zero errors:],
|
|
M4EXCEPT, except_only,
|
|
[may fail and throw
|
|
ifelse(M4PRODUCT, XML, m4_ref(XmlException)[,], m4_ref(DbException)[,])
|
|
encapsulating one of the following non-zero errors:],
|
|
[may fail and return one of the following non-zero errors:])])
|
|
define([__m4_errneedheader], no)])])
|
|
dnl
|
|
dnl ###################################################################
|
|
dnl __m4_errloop
|
|
dnl Helper macro: loop through exception list.
|
|
dnl ###################################################################
|
|
define(__m4_errloop, [dnl
|
|
ifelse([$1],,,
|
|
dnl ###################################################################
|
|
dnl Buffer Small
|
|
dnl Requires subsequent argument which is the reason for the failure.
|
|
dnl ###################################################################
|
|
[$1], buffersmall, [dnl
|
|
ifelse(M4EXCEPT, return_only, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_BUFFER_SMALL, [The [$2].])
|
|
m4_tagend],[dnl
|
|
divert(1)
|
|
m4_p([If the [$2], the __m4_errapi will fail and
|
|
ifelse(M4EXCEPT, except_return, [either return DB_BUFFER_SMALL or])
|
|
throw a m4_ref(DbMemoryException) exception.])
|
|
divert(0)])
|
|
__m4_errloop(shift(shift($@)))],
|
|
dnl ###################################################################
|
|
dnl Deadlock.
|
|
dnl ###################################################################
|
|
[$1], deadlock, [dnl
|
|
ifelse(M4EXCEPT, return_only, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_LOCK_DEADLOCK, [dnl
|
|
A transactional database environment operation was selected to resolve
|
|
a deadlock.])
|
|
m4_tag(DB_LOCK_NOTGRANTED, [dnl
|
|
A m4_cam database environment configured for lock timeouts was unable
|
|
to grant a lock in the allowed time.])
|
|
m4_tagend],[dnl
|
|
divert(1)
|
|
m4_p([If a transactional database environment operation was selected to
|
|
resolve a deadlock, the __m4_errapi will fail and
|
|
ifelse(M4EXCEPT, except_return, [either return m4_ref(DB_LOCK_DEADLOCK) or])
|
|
throw a m4_ref(DbDeadlockException) exception.])
|
|
m4_p([If a m4_cam database environment configured for lock timeouts was unable
|
|
to grant a lock in the allowed time, the __m4_errapi will fail and
|
|
ifelse(M4EXCEPT, except_return, [either return m4_ref(DB_LOCK_NOTGRANTED) or])
|
|
throw a m4_ref(DbLockNotGrantedException) exception.])
|
|
divert(0)])
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl Filenotfound
|
|
dnl ###################################################################
|
|
[$1], filenotfound, [dnl
|
|
m4_tagbegin
|
|
m4_tag(ENOENT, [The file or directory does not exist.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl LockNotGranted
|
|
dnl ###################################################################
|
|
[$1], locknotgranted, [dnl
|
|
ifelse(M4EXCEPT, return_only, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_LOCK_NOTGRANTED, [dnl
|
|
The $2 lock could not be granted before the wait-time expired.])
|
|
m4_tagend],[dnl
|
|
divert(1)
|
|
m4_p([If the $2 lock could not be granted before the wait-time expired,
|
|
the __m4_errapi will fail and
|
|
ifelse(M4EXCEPT, except_return, [either return DB_LOCK_NOTGRANTED or])
|
|
throw a m4_ref(DbLockNotGrantedException) exception.])
|
|
divert(0)])
|
|
__m4_errloop(shift(shift($@)))],
|
|
dnl ###################################################################
|
|
dnl Memory
|
|
dnl Requires subsequent argument which is the reason for the failure.
|
|
dnl ###################################################################
|
|
[$1], memory, [dnl
|
|
ifelse(M4EXCEPT, return_only, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(ENOMEM, [The [$2].])
|
|
m4_tagend],[dnl
|
|
divert(1)
|
|
m4_p([If the [$2], the __m4_errapi will fail and
|
|
ifelse(M4EXCEPT, except_return, [either return ENOMEM or])
|
|
throw a DbMemoryException.])
|
|
divert(0)])
|
|
__m4_errloop(shift(shift($@)))],
|
|
dnl ###################################################################
|
|
dnl XML: generic underlying error from the core DB.
|
|
dnl ###################################################################
|
|
[$1], dberr, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DATABASE_ERROR, [dnl
|
|
An error occurred in an underlying m4_db database. The
|
|
m4_refT(xmlexception_getdberror) will return the error code for the
|
|
error.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl EACCESS because the database is read-only.
|
|
dnl ###################################################################
|
|
[$1], readonly, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(EACCES, [An attempt was made to modify a read-only database.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl EAGAIN because the region is unavailable.
|
|
dnl ###################################################################
|
|
[$1], regionagain, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(EAGAIN, [dnl
|
|
The shared memory region was locked and (repeatedly) unavailable.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl EINVAL
|
|
dnl Requires subsequent argument which is empty or a list of may be
|
|
dnl additional reasons.
|
|
dnl ###################################################################
|
|
[$1], einval, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(EINVAL, [dnl
|
|
ifelse([$2],, An, If [$2]; or if an)
|
|
invalid flag value or parameter was specified.])
|
|
m4_tagend
|
|
__m4_errloop(shift(shift($@)))],
|
|
dnl ###################################################################
|
|
dnl DB_REP_HANDLE_DEAD -- replication rolled back a commit record.
|
|
dnl ###################################################################
|
|
[$1], rephandle, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_REP_HANDLE_DEAD, [dnl
|
|
The database handle has been invalidated because a replication election
|
|
unrolled a committed transaction.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl DB_REP_LOCKOUT -- replication blocked by client/master sync-up.
|
|
dnl ###################################################################
|
|
[$1], replockout, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_REP_LOCKOUT, [dnl
|
|
The operation was blocked by client/master synchronization.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl DB_REP_LEASE_EXPIRED -- replication lease expired
|
|
dnl ###################################################################
|
|
[$1], replease, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_REP_LEASE_EXPIRED, [dnl
|
|
The operation failed because the site's replication master lease has expired.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl EPERM because write operation with read-only CDB cursor.
|
|
dnl ###################################################################
|
|
[$1], cdbperm, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(EPERM , [dnl
|
|
Write attempted on read-only cursor when the m4_ref(DB_INIT_CDB) flag was
|
|
specified to m4_ref(dbenv_open).])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl Bad secondary.
|
|
dnl ###################################################################
|
|
[$1], secondary_bad, [dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag(DB_SECONDARY_BAD, [dnl
|
|
A secondary index references a nonexistent primary key.])
|
|
m4_tagend
|
|
__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl Empty entry (to support ifelse() constructs).
|
|
dnl ###################################################################
|
|
[$1], empty, [__m4_errloop(shift($@))],
|
|
dnl ###################################################################
|
|
dnl Everything else.
|
|
dnl ###################################################################
|
|
[dnl
|
|
__m4_errheader
|
|
m4_tagbegin
|
|
m4_tag([$1], [$2])
|
|
m4_tagend
|
|
__m4_errloop(shift(shift($@)))])])
|