summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/Makefile.am3
-rw-r--r--include/opkele/debug.h17
-rw-r--r--include/opkele/exception.h7
-rw-r--r--lib/exception.cc16
4 files changed, 37 insertions, 6 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 26cb614..1076c12 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,20 +1,21 @@
1nobase_include_HEADERS = \ 1nobase_include_HEADERS = \
2 opkele/acconfig.h \ 2 opkele/acconfig.h \
3 opkele/opkele-config.h \ 3 opkele/opkele-config.h \
4 opkele/types.h \ 4 opkele/types.h \
5 opkele/association.h \ 5 opkele/association.h \
6 opkele/exception.h \ 6 opkele/exception.h \
7 opkele/server.h \ 7 opkele/server.h \
8 opkele/consumer.h \ 8 opkele/consumer.h \
9 opkele/extension.h \ 9 opkele/extension.h \
10 opkele/sreg.h \ 10 opkele/sreg.h \
11 opkele/extension_chain.h \ 11 opkele/extension_chain.h \
12 opkele/xconsumer.h \ 12 opkele/xconsumer.h \
13 opkele/xserver.h \ 13 opkele/xserver.h \
14 opkele/discovery.h \ 14 opkele/discovery.h \
15 opkele/uris.h \ 15 opkele/uris.h \
16 opkele/tr1-mem.h 16 opkele/tr1-mem.h
17EXTRA_DIST = \ 17EXTRA_DIST = \
18 opkele/data.h \ 18 opkele/data.h \
19 opkele/curl.h opkele/expat.h \ 19 opkele/curl.h opkele/expat.h \
20 opkele/util.h 20 opkele/util.h \
21 opkele/debug.h
diff --git a/include/opkele/debug.h b/include/opkele/debug.h
new file mode 100644
index 0000000..a02f8d4
--- a/dev/null
+++ b/include/opkele/debug.h
@@ -0,0 +1,17 @@
1#ifndef __OPKELE_DEBUG_H
2#define __OPKELE_DEBUG_H
3
4#ifdef NDEBUG
5
6 #define D_(x) ((void)0)
7 #define DOUT_(x)((void)0)
8
9#else /* NDEBUG */
10
11 #define D_(x) x
12#include <iostream>
13 #define DOUT_(x)std::clog << x << std::endl
14
15#endif /* NDEBUG */
16
17#endif /* __OPKELE_DEBUG_H */
diff --git a/include/opkele/exception.h b/include/opkele/exception.h
index 36bd07a..64f189e 100644
--- a/include/opkele/exception.h
+++ b/include/opkele/exception.h
@@ -32,103 +32,100 @@
32 */ 32 */
33# define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw; } 33# define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw; }
34#else /* OPKELE_HAVE_KONFORKA */ 34#else /* OPKELE_HAVE_KONFORKA */
35# include <exception> 35# include <exception>
36# include <string> 36# include <string>
37/** 37/**
38 * the exception parameter declaration 38 * the exception parameter declaration
39 */ 39 */
40# define OPKELE_E_PARS const string& w 40# define OPKELE_E_PARS const string& w
41/** 41/**
42 * the dummy prefix for exception parameters list to prepend in the absence of 42 * the dummy prefix for exception parameters list to prepend in the absence of
43 * konforka library 43 * konforka library
44 */ 44 */
45# define OPKELE_E_CONS_ 45# define OPKELE_E_CONS_
46/** 46/**
47 * the dummy placeholder for konforka exception codepoint specification 47 * the dummy placeholder for konforka exception codepoint specification
48 */ 48 */
49# define OPKELE_CP_ 49# define OPKELE_CP_
50/** 50/**
51 * the dummy define for the opening function-try-block 51 * the dummy define for the opening function-try-block
52 */ 52 */
53# define OPKELE_FUNC_TRY 53# define OPKELE_FUNC_TRY
54/** 54/**
55 * the dummy define for the konforka-based rethrow of exception 55 * the dummy define for the konforka-based rethrow of exception
56 */ 56 */
57# define OPKELE_RETHROW 57# define OPKELE_RETHROW
58#endif /* OPKELE_HAVE_KONFORKA */ 58#endif /* OPKELE_HAVE_KONFORKA */
59/** 59/**
60 * the exception parameters list to pass to constructor 60 * the exception parameters list to pass to constructor
61 */ 61 */
62# define OPKELE_E_CONS OPKELE_E_CONS_ w 62# define OPKELE_E_CONS OPKELE_E_CONS_ w
63 63
64namespace opkele { 64namespace opkele {
65 using std::string; 65 using std::string;
66 66
67 /** 67 /**
68 * the base opkele exception class 68 * the base opkele exception class
69 */ 69 */
70 class exception : public 70 class exception : public
71# ifdef OPKELE_HAVE_KONFORKA 71# ifdef OPKELE_HAVE_KONFORKA
72 konforka::exception 72 konforka::exception
73# else 73# else
74 std::exception 74 std::exception
75# endif 75# endif
76 { 76 {
77 public: 77 public:
78# ifdef OPKELE_HAVE_KONFORKA 78# ifdef OPKELE_HAVE_KONFORKA
79 explicit 79 explicit
80 exception(const string& fi,const string& fu,int l,const string& w) 80 exception(const string& fi,const string& fu,int l,const string& w);
81 : konforka::exception(fi,fu,l,w) { }
82# else /* OPKELE_HAVE_KONFORKA */ 81# else /* OPKELE_HAVE_KONFORKA */
83 string _what; 82 string _what;
84 explicit 83 explicit exception(const string& w);
85 exception(const string& w)
86 : _what(w) { }
87 virtual ~exception() throw(); 84 virtual ~exception() throw();
88 virtual const char * what() const throw(); 85 virtual const char * what() const throw();
89# endif /* OPKELE_HAVE_KONFORKA */ 86# endif /* OPKELE_HAVE_KONFORKA */
90 }; 87 };
91 88
92 /** 89 /**
93 * thrown in case of failed conversion 90 * thrown in case of failed conversion
94 */ 91 */
95 class failed_conversion : public exception { 92 class failed_conversion : public exception {
96 public: 93 public:
97 failed_conversion(OPKELE_E_PARS) 94 failed_conversion(OPKELE_E_PARS)
98 : exception(OPKELE_E_CONS) { } 95 : exception(OPKELE_E_CONS) { }
99 }; 96 };
100 /** 97 /**
101 * thrown in case of failed lookup (either parameter or persistent store) 98 * thrown in case of failed lookup (either parameter or persistent store)
102 */ 99 */
103 class failed_lookup : public exception { 100 class failed_lookup : public exception {
104 public: 101 public:
105 failed_lookup(OPKELE_E_PARS) 102 failed_lookup(OPKELE_E_PARS)
106 : exception(OPKELE_E_CONS) { } 103 : exception(OPKELE_E_CONS) { }
107 }; 104 };
108 /** 105 /**
109 * thrown in case of bad input (either local or network) 106 * thrown in case of bad input (either local or network)
110 */ 107 */
111 class bad_input : public exception { 108 class bad_input : public exception {
112 public: 109 public:
113 bad_input(OPKELE_E_PARS) 110 bad_input(OPKELE_E_PARS)
114 : exception(OPKELE_E_CONS) { } 111 : exception(OPKELE_E_CONS) { }
115 }; 112 };
116 113
117 /** 114 /**
118 * thrown on failed assertion 115 * thrown on failed assertion
119 */ 116 */
120 class failed_assertion : public exception { 117 class failed_assertion : public exception {
121 public: 118 public:
122 failed_assertion(OPKELE_E_PARS) 119 failed_assertion(OPKELE_E_PARS)
123 : exception(OPKELE_E_CONS) { } 120 : exception(OPKELE_E_CONS) { }
124 }; 121 };
125 122
126 /** 123 /**
127 * thrown if the handle being retrieved is invalid 124 * thrown if the handle being retrieved is invalid
128 */ 125 */
129 class invalid_handle : public exception { 126 class invalid_handle : public exception {
130 public: 127 public:
131 invalid_handle(OPKELE_E_PARS) 128 invalid_handle(OPKELE_E_PARS)
132 : exception(OPKELE_E_CONS) { } 129 : exception(OPKELE_E_CONS) { }
133 }; 130 };
134 /** 131 /**
diff --git a/lib/exception.cc b/lib/exception.cc
index 510982e..0b775f7 100644
--- a/lib/exception.cc
+++ b/lib/exception.cc
@@ -1,29 +1,45 @@
1#include <openssl/err.h> 1#include <openssl/err.h>
2#include <curl/curl.h> 2#include <curl/curl.h>
3#include <opkele/exception.h> 3#include <opkele/exception.h>
4#include <opkele/debug.h>
4 5
5namespace opkele { 6namespace opkele {
6 7
7# ifndef OPKELE_HAVE_KONFORKA 8# ifndef OPKELE_HAVE_KONFORKA
8 9
10 exception::exception(const string& w)
11 : _what(w)
12 {
13 DOUT_("throwing exception(\""<<w<<"\")");
14 }
15
9 exception::~exception() throw() { 16 exception::~exception() throw() {
10 } 17 }
11 const char *exception::what() const throw() { 18 const char *exception::what() const throw() {
12 return _what.c_str(); 19 return _what.c_str();
13 } 20 }
21
22# else
14 23
24 exception::exception(const string& fi,const string& fu,int l,const string& w)
25 : konforka::exception(fi,fu,l,w)
26 {
27 DOUT_("throwing exception(\""<<w<<"\")");
28 DOUT_(" from "<<fi<<':'<<fu<<':'<<l);
29 }
30
15# endif 31# endif
16 32
17 exception_openssl::exception_openssl(OPKELE_E_PARS) 33 exception_openssl::exception_openssl(OPKELE_E_PARS)
18 : exception(OPKELE_E_CONS_ w+" ["+ERR_error_string(ERR_peek_last_error(),0)+']'), 34 : exception(OPKELE_E_CONS_ w+" ["+ERR_error_string(ERR_peek_last_error(),0)+']'),
19 _error(ERR_peek_last_error()), 35 _error(ERR_peek_last_error()),
20 _ssl_string(ERR_error_string(_error,0)) { 36 _ssl_string(ERR_error_string(_error,0)) {
21 } 37 }
22 38
23 exception_curl::exception_curl(OPKELE_E_PARS) 39 exception_curl::exception_curl(OPKELE_E_PARS)
24 : exception_network(OPKELE_E_CONS), _error(CURLE_OK) { } 40 : exception_network(OPKELE_E_CONS), _error(CURLE_OK) { }
25 exception_curl::exception_curl(OPKELE_E_PARS,CURLcode e) 41 exception_curl::exception_curl(OPKELE_E_PARS,CURLcode e)
26 : exception_network(OPKELE_E_CONS_ w+" ["+curl_easy_strerror(e)+']'), 42 : exception_network(OPKELE_E_CONS_ w+" ["+curl_easy_strerror(e)+']'),
27 _error(e), _curl_string(curl_easy_strerror(e)) { } 43 _error(e), _curl_string(curl_easy_strerror(e)) { }
28 44
29} 45}