diff options
author | Alan Conway <aconway@apache.org> | 2006-10-12 18:52:49 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2006-10-12 18:52:49 +0000 |
commit | c256b20602a42a3d33f36bb0e8d9692906d282a6 (patch) | |
tree | 0fba6619fbb98c3511785143ca30647c5e6a4469 /cpp/common/error | |
parent | 1e6a034ccd8e260e615195bf193aed7d37b928a8 (diff) | |
download | qpid-python-c256b20602a42a3d33f36bb0e8d9692906d282a6.tar.gz |
Converted broker to a class for use in tests, plugins etc.
qpid::Exception base class for all exceptions, inherits std::exception.
Require boost on all platforms: http://www.boost.org, 'yum boost' on fedora.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@463376 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/common/error')
-rw-r--r-- | cpp/common/error/inc/Exception.h | 46 | ||||
-rw-r--r-- | cpp/common/error/inc/QpidError.h | 25 | ||||
-rw-r--r-- | cpp/common/error/src/Exception.cpp (renamed from cpp/common/error/inc/QpidErrorIO.h) | 12 | ||||
-rw-r--r-- | cpp/common/error/src/QpidError.cpp | 32 |
4 files changed, 92 insertions, 23 deletions
diff --git a/cpp/common/error/inc/Exception.h b/cpp/common/error/inc/Exception.h new file mode 100644 index 0000000000..709538c851 --- /dev/null +++ b/cpp/common/error/inc/Exception.h @@ -0,0 +1,46 @@ +#ifndef _Exception_ +#define _Exception_ + +/* + * + * Copyright (c) 2006 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include <exception> +#include <string> + +namespace qpid +{ + /** + * Exception base class for all Qpid exceptions. + */ + class Exception : public std::exception + { + protected: + std::string whatStr; + + public: + Exception() throw() {} + Exception(const std::string& str) throw() : whatStr(str) {} + Exception(const char* str) throw() : whatStr(str) {} + virtual ~Exception() throw(); + + const char* what() const throw() { return whatStr.c_str(); } + virtual std::string toString() const throw() { return whatStr; } + }; +} + +#endif /*!_Exception_*/ diff --git a/cpp/common/error/inc/QpidError.h b/cpp/common/error/inc/QpidError.h index a739b506c7..3310c71a88 100644 --- a/cpp/common/error/inc/QpidError.h +++ b/cpp/common/error/inc/QpidError.h @@ -1,3 +1,5 @@ +#ifndef __QpidError__ +#define __QpidError__ /* * * Copyright (c) 2006 The Apache Software Foundation @@ -16,23 +18,20 @@ * */ #include <string> - -#ifndef __QpidError__ -#define __QpidError__ +#include "Exception.h" namespace qpid { -class QpidError{ -public: - const int code; - const std::string msg; - const std::string file; - const int line; + class QpidError : public Exception { + public: + const int code; + const std::string msg; + const std::string file; + const int line; - inline QpidError(int _code, const std::string& _msg, const std::string& _file, int _line) : code(_code), msg(_msg), file(_file), line(_line) {} - ~QpidError(){} - -}; + QpidError(int _code, const std::string& _msg, const std::string& _file, int _line) throw(); + ~QpidError() throw(); + }; #define THROW_QPID_ERROR(A, B) throw QpidError(A, B, __FILE__, __LINE__) diff --git a/cpp/common/error/inc/QpidErrorIO.h b/cpp/common/error/src/Exception.cpp index 4f9bd3ce26..69e5f135f2 100644 --- a/cpp/common/error/inc/QpidErrorIO.h +++ b/cpp/common/error/src/Exception.cpp @@ -16,14 +16,6 @@ * */ -#include "QpidError.h" -#include <ostream> - -std::ostream& operator <<(std::ostream& out, const QpidError& error) -{ - out << "Qpid Error [" << error.code << "] " << error.msg - << " (" << error.file << ":" << error.line << ")"; - return out; -} - +#include "Exception.h" +qpid::Exception::~Exception() throw() {} diff --git a/cpp/common/error/src/QpidError.cpp b/cpp/common/error/src/QpidError.cpp new file mode 100644 index 0000000000..c8049ab3cb --- /dev/null +++ b/cpp/common/error/src/QpidError.cpp @@ -0,0 +1,32 @@ +/* + * + * Copyright (c) 2006 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "QpidError.h" +#include <sstream> + +using namespace qpid; + +QpidError::QpidError(int _code, const std::string& _msg, const std::string& _file, int _line) throw() + : code(_code), msg(_msg), file(_file), line(_line) +{ + std::ostringstream os; + os << "QpidError(" << code << ") " << msg << " (" << file << ":" << line << ")"; + whatStr = os.str(); +} + +QpidError::~QpidError() throw() {} |