From 1b4c02dc9fbef138f7ed59550d533fe3ae13017f Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Tue, 8 Jul 2008 15:56:04 +0000 Subject: 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 --- cpp/src/qpid/Exception.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'cpp/src/qpid/Exception.h') 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 #include +#include 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) -- cgit v1.2.1