diff options
| author | Alan Conway <aconway@apache.org> | 2008-07-08 15:56:04 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2008-07-08 15:56:04 +0000 |
| commit | 1b4c02dc9fbef138f7ed59550d533fe3ae13017f (patch) | |
| tree | 3b82530feeac8cccbcba94ad26f776ce07a9651f /cpp/src/qpid/Exception.h | |
| parent | 43664d69dc90c128ad3f73327ac8331b02d7a38c (diff) | |
| download | qpid-python-1b4c02dc9fbef138f7ed59550d533fe3ae13017f.tar.gz | |
QPID-1148 - from Manuel Tiera
Lock file abstraction in sys/ with implementation portable to Linux and Solaris.
Changes by myself:
- Makefile.am - must be updated for any new/renamed/removed source files.
- Exception.h, Daemon.h, LockFile.h: Replaced throwIf() with if (...) throw ErrnoException(...)
The idiom throwIf(call-system-function(), "msg", errno) is incorret
(my fault, not Manuels). It assumes the first argument that makes a
system call call will be evaluated before the last one which fetches
errno. This may not be true on some compilers/platforms.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@674865 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/Exception.h')
| -rw-r--r-- | cpp/src/qpid/Exception.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/cpp/src/qpid/Exception.h b/cpp/src/qpid/Exception.h index 1be433f17a..4e91f85ddb 100644 --- a/cpp/src/qpid/Exception.h +++ b/cpp/src/qpid/Exception.h @@ -28,12 +28,13 @@ #include <memory> #include <string> +#include <errno.h> namespace qpid { /** Get the error message for a system number err, e.g. errno. */ -std::string strError(int err); +std::string strError(int err=errno); /** * Base class for Qpid runtime exceptions. @@ -52,6 +53,11 @@ class Exception : public std::exception mutable std::string whatStr; }; +/** Exception that includes an errno message. */ +struct ErrnoException : public Exception { + ErrnoException(const std::string& msg, int err=errno) : Exception(msg+": "+strError(err)) {} +}; + struct SessionException : public Exception { const framing::ReplyCode code; SessionException(framing::ReplyCode code_, const std::string& message) |
