summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/Exception.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-07-08 15:56:04 +0000
committerAlan Conway <aconway@apache.org>2008-07-08 15:56:04 +0000
commit1b4c02dc9fbef138f7ed59550d533fe3ae13017f (patch)
tree3b82530feeac8cccbcba94ad26f776ce07a9651f /cpp/src/qpid/Exception.h
parent43664d69dc90c128ad3f73327ac8331b02d7a38c (diff)
downloadqpid-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.h8
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)