summaryrefslogtreecommitdiff
path: root/cpp/common/error
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2006-10-12 18:52:49 +0000
committerAlan Conway <aconway@apache.org>2006-10-12 18:52:49 +0000
commitc256b20602a42a3d33f36bb0e8d9692906d282a6 (patch)
tree0fba6619fbb98c3511785143ca30647c5e6a4469 /cpp/common/error
parent1e6a034ccd8e260e615195bf193aed7d37b928a8 (diff)
downloadqpid-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.h46
-rw-r--r--cpp/common/error/inc/QpidError.h25
-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.cpp32
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() {}